keepalived主从及双主的配置
一、什么是Keepalived?
Keepalived是一个用C编写的路由软件。该项目的主要目标是为Linux系统和基于Linux的基础架构提供简单而强大的负载平衡和高可用性设施。 负载平衡框架依赖于众所周知且广泛使用的Linux虚拟服务器(IPVS)内核模块,提供Layer4负载均衡。Keepalived实现了一组检查程序,以根据其健康状况动态地和自适应地维护和管理负载平衡的服务器池。另一方面,VRRP实现了高可用性 协议。VRRP是路由器故障转移的基础。
Keepalived为VRRP有限状态机实现了一组挂钩,提供低级和高速协议交互。为了提供最快的网络故障检测,Keepalived实现了BFD协议。VRRP状态转换可以考虑BFD提示来驱动快速状态转换。Keepalived框架可以单独使用,也可以一起使用,以提供灵活的基础架构。
二、高可用有两种方式
1、Nginx+keepalived 主从配置
这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。
2、Nginx+keepalived 双主配置
这种方案,使用两个vip地址,前端使用2台机器,互为主备,同时有两台机器工作,当其中一台机器出现故障,两台机器的请求转移到一台机器负担,非常适合于当前架构环境。
三、具体的配置
1、Nginx+keepalived 主从配置
1.环境如下
lb-01:192.168.96.130 nginx+keepalived-master
lb-02:192.168.96.131 nginx+keepalived-backup
VIP:192.168.96.138

nginx+tomcat负载均衡集群参照 nginx+tomcat负载均衡集群参照
两台机器都要安装nginx 配置文件相同
server 192.168.96.130:8080;server 192.168.96.131:8080;}server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location {proxy_pass http://myServer;}
2、nginx结合keepalived高可用
为什么使用keepalived呢?使用keepalived就用来做高可用的,提供虚拟VIP
分别在2台机子上安装keepalived
# yum install keepalived -y
查看keepalived版本
# keepalived -vKeepalived v1.2.13 (11/20,2015)
关于2台keepalived配置文件/etc/keepalived
在130master keepalived配置文件内容如下:
notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL}vrrp_script chk_http_port {script "/usr/local/src/check_nginx_pid.sh"interval 2 #(检测脚本执行的间隔)weight 2}vrrp_instance VI_1 {state MASTER # 备份服务器上将 MASTER 改为 BACKUPinterface eno16777736 网卡virtual_router_id 51 # 主、备机的virtual_router_id必须相同priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.96.138 VRRP H虚拟地址}}
在131-backup keepalived配置文件内容如下
notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL}vrrp_script chk_http_port {script "/usr/local/src/check_nginx_pid.sh"interval 2 #(检测脚本执行的间隔)weight 2}vrrp_instance VI_1 {state BACKUP # 备份服务器上将 MASTER 改为 BACKUPinterface eno16777736virtual_router_id 51priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.96.138}
然后分别启动2台keepalived服务
[root@lb-01 ~]# systemctl start keepalived.service[root@lb-02 ~]# systemctl start keepalived.service
查看虚拟VIP
130-master机器查看

从上面可以看到虚拟VIP地址192.168.96.138
131-backup机器查看

上面可以看到没有虚拟VIP地址
测试访问虚拟VIP
打开浏览器访问

此时虚拟VIP可以轮询访问了
模拟故障
把130-master nginx和keepalived停止查看是否还能正常提供服务
[root@lb-01 sbin]# ./nginx -s stop
[root@lb-01 sbin]# systemctl stop keepalived.service
此时虚拟VIP已经不再master上了

客户端打开浏览器访问是否正常访问

130nginx和keepalived挂了也不影响服务
查看131backup机器VIP情况

此时虚拟VIP 已经在131机器上
3、nginx+keepalived双主模式

1.其实只是需要更改下keepalived配置文件即可,配置文件实例如下
增加新的VIP192.168.96.139,192.168.75.138是130机器上主虚拟VIP,192.168.96.139是131机器上主虚拟VIP
130的keepalived配置文件内容如下
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL}vrrp_script chk_http_port {script "/usr/local/src/check_nginx_pid.sh"interval 2 #(检测脚本执行的间隔)weight 2}vrrp_instance VI_1 {state MASTERinterface eno16777736virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.96.138}}vrrp_instance VI_2 {state BACKUPinterface eno16777736virtual_router_id 52priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.96.139}}
131的keepalived配置文件内容如下
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL}vrrp_script chk_http_port {script "/usr/local/src/check_nginx_pid.sh"interval 2 #(检测脚本执行的间隔)weight 2}vrrp_instance VI_1 {state BACKUPinterface eno16777736virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.96.138}}vrrp_instance VI_2 {state MASTERinterface eno16777736virtual_router_id 52priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.96.139}}
分别启动2台lb上nginx和keepalived服务
[root@lb-01 sbin]# ./nginx[root@lb-01 sbin]# systemctl start keepalived.service
130查看虚拟ip

131查看虚拟ip

客户端测试访问虚拟VIP
访问虚拟VIP:192.168.96.138结果如下

访问虚拟VIP:192.168.96.139结果如下

模拟故障
把130服务停止
查看130虚拟VIP是否存在结果如下
测试访问虚拟VIP




从上面结果可以看到,即使130机器发生了故障也不影响使用,这样也利用131资源了
此时查看一下131虚拟ip结果情况如下

双主模式配置成功。
喜欢就关注吧:






