nginx怎么结合keepalived实现高可用

keepalived的介绍

keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

系统架构

nginx怎么结合keepalived实现高可用

实现步骤

1.环境配置

1.1 安装nginx

安装相关依赖

yum install pcre-devel zlib zlib-devel openssl openssl-devel

上传解压压缩包

tar zxvf nginx-1.12.2.tar.gz

创建目录,检测配置

mkdir -p /usr/local/nginx ./configure --prefix=/usr/local/nginx

预编译和安装

make && make install

启动、停止相关命令

cd /usr/local/nginx/sbin/ ./nginx ./nginx -s stop ./nginx -s start

1.2 安装keepalived

yum install -y keepalived

2.主机配置

修改keepalived配置文件

vim /etc/keepalived/keepalived.conf

修改的内容如下

#新增的配置 vrrp_script chk_http_port {  script "/shell/nginx_check.sh" #脚本地址  interval 2 #检测脚本执行的间隔  weight 2 #比重 }  vrrp_instance vi_1 {  state master #主服务器为master,从服务器为backup  interface eth0 #网卡  virtual_router_id 51 #主、备机的virtual_router_id必须相同  priority 100 #主、备机不同的优先级,主机优先级较大,备机值较小,默认是100  advert_int 1  authentication {   auth_type pass   auth_pass 1111  }  #虚拟ip地址  virtual_ipaddress {   192.168.126.88  } }

创建编写脚本文件

mkdir /shell/nginx_check.sh vim /shell/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

3.从机配置

修改keepalived配置文件

vrrp_instance vi_1 {   state backup #主服务器为master,从服务器为backup   interface eth0 #网卡   virtual_router_id 51 #主、备机的virtual_router_id必须相同   priority 50 #主、备机不同的优先级,主机优先级较大,备机值较小   advert_int 1   authentication {     auth_type pass     auth_pass 1111   }   #虚拟ip地址   virtual_ipaddress {     192.168.126.88   } }

4.启动服务

启动

service keepalived start

查看虚拟ip地址

ip addr 1: lo: <loopback> mtu 65536 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: <broadcast> mtu 1500 qdisc pfifo_fast state up qlen 1000   link/ether 00:0c:29:4f:31:ce brd ff:ff:ff:ff:ff:ff   inet 192.168.126.100/24 brd 192.168.126.255 scope global eth0   inet 192.168.126.88/32 scope global eth0   inet6 fe80::20c:29ff:fe4f:31ce/64 scope link      valid_lft forever preferred_lft forever</broadcast></loopback>

5.关闭防火墙测试

关闭防火墙

service iptables stop #查看防火墙是否开机自启动 chkconfig --list | grep iptables chkconfig iptables off

登陆虚拟ip地址查看

http://192.168.126.88/

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享