linux 主备自动切换,centos nginx+Keepalived双机热备高可用集群自动切换

Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

192.168.28.135服务器

[root@localhost ~]# yum -y install  keepalived

[root@localhost ~]# yum -y install ipvsadm

解决nginx依赖关系

[root@localhost ~]# yum -y install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

下载nginx

Wegt http://nginx.org/download/nginx-1.6.0.tar.gz

[root@localhost ~]# tar xf nginx-1.6.0.tar.gz

编译安装nginx

[root@localhost ~]# cd nginx-1.6.0

[root@localhost nginx-1.6.0]#  ./configure --prefix=/usr/local/nginx && make && make install

配置Nginx

[root@localhost ~]# vim /usr/local/nginx/html/index.html

Welcome to nginx! 1

测试nginx是否安装成功

[root@localhost ~]# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

启动nginx

[root@localhost ~]# /usr/local/nginx/sbin/nginx

重启nginx

[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload

设置nginx开机启动

[root@localhost ~]# vim /etc/rc.local

加入

/usr/local/nginx/sbin/nginx

Keepalived配置

[root@localhost ~]# chkconfig keepalived on

Keepalived配置文件

[root@localhost ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_script chk_nginx {

script "/etc/keepalived/nginx_check.sh"

interval 2

weight -20

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

nopreempt

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

track_script {

chk_nginx

}

virtual_ipaddress {

192.168.28.130

}

}

}

编写nginx状态检测脚本

编写 Nginx 状态检测脚本 /etc/keepalived/nginx_check.sh (已在 keepalived.conf 中配置)脚本要求:如果 nginx 停止运行,尝试启动,如果无法启动则杀死本机的 keepalived 进程, keepalied将虚拟 ip 绑定到 BACKUP 机器上。

[root@localhost ~]# vim /etc/keepalived/nginx_check.sh

#!/bin/bash

A=`ps -C nginx –no-header |wc -l`

if [ $A -eq 0 ];then

/usr/local/nginx/sbin/nginx

sleep 2

if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

killall keepalived

fi

fi

脚本加权限

[root@localhost ~]# chmod +x /etc/keepalived/nginx_check.sh

启动keepalived服务

[root@localhost ~]# service keepalived start

正在启动 keepalived:                                      [确定]

[root@localhost ~]# ip a

1: lo: mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:32:c1:9e brd ff:ff:ff:ff:ff:ff

inet 192.168.28.135/24 brd 192.168.28.255 scope global eth0

inet 192.168.28.130/32 scope global eth0

inet6 fe80::20c:29ff:fe32:c19e/64 scope link

valid_lft forever preferred_lft forever

3: pan0: mtu 1500 qdisc noop state DOWN

link/ether 96:04:a4:58:4f:72 brd ff:ff:ff:ff:ff:ff

192.168.28.129服务器

[root@localhost ~]# yum -y install nginx keepalived

[root@localhost ~]# yum -y install ipvsadm

解决nginx依赖关系

[root@localhost ~]# yum -y install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

下载nginx

Wegt http://nginx.org/download/nginx-1.6.0.tar.gz

[root@localhost ~]# tar xf nginx-1.6.0.tar.gz

编译安装nginx

[root@localhost ~]# cd nginx-1.6.0

[root@localhost nginx-1.6.0]#  ./configure --prefix=/usr/local/nginx && make && make install

配置Nginx

[root@localhost ~]# vim /usr/local/nginx/html/index.html

Welcome to nginx! 1

测试nginx是否安装成功

[root@localhost ~]# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

启动nginx

[root@localhost ~]# /usr/local/nginx/sbin/nginx

重启nginx

[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload

设置nginx开机启动

[root@localhost ~]# vim /etc/rc.local

加入

/usr/local/nginx/sbin/nginx

Keepalived配置

[root@localhost ~]# chkconfig keepalived on

Keepalived配置文件

[root@localhost ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_script chk_nginx {

script "/etc/keepalived/nginx_check.sh"

interval 2

weight -20

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

mcast_src_ip 192.168.28.129

priority 90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

track_script {

chk_nginx

}

virtual_ipaddress {

192.168.28.130

}

}

}

编写nginx状态检测脚本

编写 Nginx 状态检测脚本 /etc/keepalived/nginx_check.sh (已在 keepalived.conf 中配置)脚本要求:如果 nginx 停止运行,尝试启动,如果无法启动则杀死本机的 keepalived 进程, keepalied将虚拟 ip 绑定到 BACKUP 机器上。

[root@localhost ~]# vim /etc/keepalived/nginx_check.sh

#!/bin/bash

A=`ps -C nginx –no-header |wc -l`

if [ $A -eq 0 ];then

/usr/local/nginx/sbin/nginx

sleep 2

if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

killall keepalived

fi

fi

脚本加权限

[root@localhost ~]# chmod +x /etc/keepalived/nginx_check.sh

启动keepalived服务

[root@localhost ~]# service keepalived start

正在启动 keepalived:                                      [确定]

[root@localhost ~]# ip a

1: lo: mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:6a:b8:4b brd ff:ff:ff:ff:ff:ff

inet 192.168.28.129/24 brd 192.168.28.255 scope global eth0

inet 192.168.28.130/32 scope global eth0

inet6 fe80::20c:29ff:fe6a:b84b/64 scope link

valid_lft forever preferred_lft forever

3: pan0: mtu 1500 qdisc noop state DOWN

link/ether b2:95:84:54:6f:36 brd ff:ff:ff:ff:ff:ff

测试nginx页面

b4d567382485dfaa917f76ce920707be.png

6ed0be85f290087427e4719aaaa15c32.png

Keepalived+Nginx 的高可用测试

关闭192.168.28.135服务keepalived

[root@localhost ~]# service keepalived stop

停止 keepalived:                                          [确定]

在浏览器中输入VIP地址

e15a0a9c51cf7bee5aebd045c55f5cd9.png

在开启192.168.28.135服务keepalived

[root@localhost ~]# service keepalived start

正在启动 keepalived:                                      [确定]

关闭192.168.28.129服务keepalived

[root@localhost ~]# service keepalived stop

停止 keepalived:                                          [确定]

在浏览器中输入VIP地址

ca6d13c120dc7a8d2e276a959e9254d5.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值