nginx集群搭建(nginx+lvs+keepAlived)
环境搭建流程
使用2台虚拟机。主机:192.168.100.133 备机:192.168.100.134
在主机上安装nginx keepalived软件。 修改keepalived文件 新建nginx_check.sh文件。然后克隆主机,修改克隆机的keepalived文件 新建nginx_check.sh文件。开始测试主机的nginx挂掉后是否使用备机。
1.示例图
搭建nginx一主一备防止单个nginx挂掉后程序无法运行.png2.安装nginx
https://www.jianshu.com/p/a8e3561c21ad
3.安装keepAlived
-
下载keepAlived
图片.png
wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz
-
解压keepAlived
tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/
图片.png -
下载插件openssl
yum install -y openssl openssl-devel(需要安装一个软件包) -
开始编译keepalived
cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived
图片.png
编译成功显示的信息.png -
初始化keepalived配置
make && make install
出现警告不用管可以使用的具体原因自行百度.png -
设置keepalived开机自动启动
1)设置启动配置信息
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/sbin/keepalived /usr/sbin
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
图片.png
2)设置开机启动
chkconfig keepalived on
图片.png -
启动或关闭keepalived
service keepalived start
service keepalived stop
图片.png -
查看是否启动成功
ps aux | grep keepalived
图片.png -
启动报错
图片.png
解决方式:
图片.png -
注意点
本人用的linux是contos8.2 keepalived用的版本为1.2.18,如果环境不一致安装过程可能会出现其他错误请自行百度
4. 开启lvs的vip虚拟地址
- 编辑或直接替换keepalived.conf文件
cd /etc/keepalived/
图片.png
! Configuration File for keepalived
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
interval 2 #检测时间间隔
weight -20 #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state MASTER #MASTER 主的意思 BACKUP 从
interface ens32 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
virtual_router_id 35 # 虚拟路由的 ID 号, 两个节点设置必须一样
mcast_src_ip 192.168.100.133 #填写本机ip
priority 100 # 节点优先级,主要比从节点优先级高
nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
authentication {
auth_type PASS
auth_pass 1111
}
# 将 track_script 块加入 instance 配置块
track_script {
chk_nginx #执行 Nginx 监控的服务
}
### 虚拟IP地址配置规范 假设192.168.100.110
virtual_ipaddress {
192.168.100.110 # 虚拟ip,可配置多个。必须跟本机同一网段
}
}
-
重启keepalived
图片.png -
查看lvs的vip是否配置成功
ip addr
图片.png
5.创建nginx自动启动脚本
- 进入cd /etc/keepalived/ 目录中,新建nginx_check.sh文件编写内容如下
(每隔2秒检查nginx是否宕机,是就重启)
#!/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
-
给nginx_check.sh设置权限
chmod 777 /etc/keepalived/nginx_check.sh
图片.png
注意点:要跟keepalived.conf文件中配置的路径匹配
图片.png
6.配置从服务器
- 描述
直接把主服务器克隆一份,修改keepalived.conf,设置nginx_check.sh的权限即可。 - 配置keepalived.conf文件
! Configuration File for keepalived
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
interval 2 #检测时间间隔
weight -20 #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state BACKUP #MASTER 主的意思 BACKUP 从
interface ens32 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
virtual_router_id 35 # 虚拟路由的 ID 号, 两个节点设置必须一样
mcast_src_ip 192.168.100.134 #填写本机ip
priority 100 # 节点优先级,主要比从节点优先级高
nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
authentication {
auth_type PASS
auth_pass 1111
}
# 将 track_script 块加入 instance 配置块
track_script {
chk_nginx #执行 Nginx 监控的服务
}
### 虚拟IP地址配置规范 假设192.168.100.110
virtual_ipaddress {
192.168.100.110 # 虚拟ip,可配置多个。必须跟本机同一网段
}
}
7.测试环境是否搭建成功
浏览器输入192.168.100.110看时候能访问nginx,再把主服务器keepalived停掉看是否能访问,能就说明nginx一主一备环境搭建成功
图片.png