博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Keepalived+nginx实现高可用
阅读量:6387 次
发布时间:2019-06-23

本文共 5719 字,大约阅读时间需要 19 分钟。


(keepalived只是解决代理的单点和地址漂流问题,所以只能对本机服务进行的Nginx服务进行健康监控检测)


在部署站点规模不大的网站架构是一般通常使用keepalived+nginx来实现、从而实现轻量级的调度服务功能;用到lvs的场景不是很多,只有大规模的站点部署是才有可能用到。Nginx实现高可用,通过DNS服务解析,编辑两条A记录,从而实现真正的高可用,但是需要两个公网地址。虽然DNS调度效果不是很理想,但是有后端的nginx来为其进行优化、填坑,从而达到最理想的部署。

Keepalived+nginx实现高可用


Nginx配置文件

http {}中配置

upstream websrvs {  #定义组                server 10.10.10.111:80 weight=1;   #定义组内站点,权重都为1                server 10.10.10.112:80 weight=1;    #定义组内站点,权重都为1}

server {}中配置

location / {proxy_pass http://websrvs; #引用定义的组                }Keepalived配置文件#vrrp中

Keepalived+nginx的配置文件参考示例:(仅供参考)

Server-1:

[root@keepalived-1 keepalived]# cat keepalived.conf! Configuration File for keepalived#全局配置global_defs {notification_email {                 root@loaclhost    #定义收件人地址     }notification_email_from keepalived@localhost  #邮件发件人地址     smtp_server 127.0.0.1          #发送邮件服务器地址smtp_connect_timeout 10           #连接邮件服务器的超时时间     router_id 10.10.10.101         #当前路由的id信息网络中的节点标识(物理IP地址或主机名)vrrp_mcast_group4 224.0.122.22    #组播地址}#脚本实现本机nginx服务运行状态监控vrrp_script chk_ngx{         script   "killall -0 nginx"   #使用killall命令探测nginx服务运行是否正常,从而实现健康检测。                interval 1                weight -5}#vrrp1vrrp_instance VI_1 {   #一个虚拟路由器的标识,        state MASTER       #一个虚拟路由器的标识,        interface ens33    # 绑定为当前虚拟路由器使用的物理接口;一般为网卡地址;virtual_router_id 11   #当前虚拟路由器的惟一标识(相同组的两台机器必须一致)        priority 100       #当前主机在此虚拟路径器中的优先级;范围1-254;        advert_int 1       #vrrp通告的时间间隔;心跳间隔时间。authentication {       #认证方式为:域共享密钥auth_type PASS        auth_pass 11112222     #最多不要超过8位        }virtual_ipaddress {10.10.1.1/16 dev ens33  #(接口辅助地址,vip地址,虚拟地址)        }#调用服务监控                track_script {    #调用vrrp内部定义指令,跟踪所指定执行脚本的健康状态                                chk_ngx    #调用vrrp中定义的chk_ngx                 }#监控接口                 track_interface {                                     ens33   #追踪/监控 接口                 }#触发通知脚本notify_master "/etc/keepalived/keepmail.sh master" #当前节点成为主节点时触发的脚本;notify_backup "/etc/keepalived/keepmail.sh backup" #当前节点转为备节点时触发的脚本;notify_fault "/etc/keepalived/keepmail.sh fault"   #当前节点转为“失败”状态时触发的脚本;}#vrrp2vrrp_instance VI_2 {           #一个虚拟路由器的标识,     state BACKUP                #重要选项,初始或状态;只能有一个是MASTER,余下的都应该为BACKUP;     interface ens33             # 绑定为当前虚拟路由器使用的物理接口;一般为网卡地址;virtual_router_id 22           #当前虚拟路由器的惟一标识(相同组的两台机器必须一致)     priority 98                 #当前主机在此虚拟路径器中的优先级;范围1-254;     advert_int 1                #vrrp通告的时间间隔;心跳间隔时间。authentication {                     auth_type PASS          #认证方式为:域共享密钥             auth_pass 11112222      #最多不要超过8位     } virtual_ipaddress {10.10.1.2/16  dev ens33        #(接口辅助地址,vip地址,虚拟地址)     }#调用服务监控                track_script {       #调用vrrp内部定义指令,跟踪所指定执行脚本的健康状态                                chk_ngx      #调用vrrp中定义的chk_ngx                 }#监控接口                track_interface {                                ens33        #追踪/监控 接口                }#触发通知脚本  notify_master "/etc/keepalived/keepmail.sh master"     #当前节点成为主节点时触发的脚本;notify_backup "/etc/keepalived/keepmail.sh backup"     #当前节点转为备节点时触发的脚本;notify_fault "/etc/keepalived/keepmail.sh fault"       #当前节点转为“失败”状态时触发的脚本;}

Server-2:

[root@keepalived-2 keepalived]# cat keepalived.conf! Configuration File for keepalived#全局配置global_defs {notification_email {     #定义收件人地址root@localhost                 }notification_email_from keepalived@localhost      #邮件发件人地址smtp_server 127.0.0.1                 #发送邮件服务器地址smtp_connect_timeout 10               #连接邮件服务器的超时时间router_id 10.10.10.102                #当前路由的id信息网络中的节点标识(物理IP地址或主机名)vrrp_mcast_group4 224.0.122.22        #组播地址}#脚本实现本机nginx服务监控vrrp_script chk_ngx   {        script   "killall -0 nginx"     interval 1                      weight -5}vrrp_instance VI_1 {            #一个虚拟路由器的标识,state BACKUP                    #重要选项,初始或状态;只能有一个是MASTER,余下的都应该为BACKUP;interface ens33                 # 绑定为当前虚拟路由器使用的物理接口;一般为网卡地址;virtual_router_id 11            #当前虚拟路由器的惟一标识(相同组的两台机器必须一致)        priority 98                 #当前主机在此虚拟路径器中的优先级;范围1-254;advert_int 1                    #vrrp通告的时间间隔;心跳间隔时间。authentication {                #认证方式为:域共享密钥auth_type PASSauth_pass 11112222              #最多不要超过8位}virtual_ipaddress {                 10.10.1.1/16 dev ens33  #(接口辅助地址,vip地址,虚拟地址)#调用服务监控                track_script {          #调用vrrp内部定义指令,跟踪所指定执行脚本的健康状态                                chk_ngx         #调用vrrp中定义的chk_ngx                 }#监控接口                 track_interface {                                    ens33         #追踪/监控 接口                 }#触发通知脚本notify_master "/etc/keepalived/keepmail.sh master"    #当前节点成为主节点时触发的脚本;notify_backup "/etc/keepalived/keepmail.sh backup"    #当前节点转为备节点时触发的脚本;notify_fault "/etc/keepalived/keepmail.sh fault"      #当前节点转为“失败”状态时触发的脚本;}vrrp_instance VI_2 {   #一个虚拟路由器的标识,state MASTER           #重要选项,初始或状态;只能有一个是MASTER,余下的都应该为BACKUP;interface ens33        # 绑定为当前虚拟路由器使用的物理接口;一般为网卡地址;virtual_router_id 22   #当前虚拟路由器的惟一标识(相同组的两台机器必须一致)priority 100           #当前主机在此虚拟路径器中的优先级;范围1-254;advert_int 1           #vrrp通告的时间间隔;心跳间隔时间。  authentication {     auth_type PASS         #认证方式为:域共享密钥auth_pass 11112222     #最多不要超过8位     }virtual_ipaddress {   10.10.1.2/16 dev ens33       #(接口辅助地址,vip地址,虚拟地址)}#调用服务监控                track_script {       #调用vrrp内部定义指令,跟踪所指定执行脚本的健康状态                                chk_ngx      #调用vrrp中定义的chk_ngx                 }#监控接口                track_interface {                                ens33        #追踪/监控 接口                }#触发通知脚本  notify_master "/etc/keepalived/keepmail.sh master"     #当前节点成为主节点时触发的脚本;notify_backup "/etc/keepalived/keepmail.sh backup"     #当前节点转为备节点时触发的脚本;notify_fault "/etc/keepalived/keepmail.sh fault"       #当前节点转为“失败”状态时触发的脚本; }

转载于:https://blog.51cto.com/12105235/2125128

你可能感兴趣的文章
JWT的初步了解以及session、cookie机制
查看>>
p类型最大可定义范围
查看>>
OC 创建单例
查看>>
UVa 10615 - Rooks
查看>>
LVS集群中实现的三种IP负载均衡技术
查看>>
关于数据库连接的一些小知识点
查看>>
P1975 [国家集训队]排队
查看>>
5、Spring-Cloud-声明式调用 Feign(上)
查看>>
jq ajax超时设置
查看>>
小程序自定义组件
查看>>
pymongo 操作
查看>>
BBS第三天
查看>>
EF Core数据迁移操作
查看>>
[NHibernate]延迟加载
查看>>
EXCEL计算根据当前时间和身份证号计算准确年龄
查看>>
怒刷DP之 HDU 1029
查看>>
CF Covered Path (贪心)
查看>>
zzuli 1905 小火山的跳子游戏
查看>>
Oracle数据库中序列(SEQUENCE)的用法详解
查看>>
活着是被打败的?
查看>>