深圳前海网站设计,证券公司客户经理怎么拉客户,企业展厅设计哪些内容,网络购物系统参考文献Nginx 和 Keepalived 是常用于构建高可用性#xff08;High Availability#xff09;架构的工具。Nginx 是一款高性能的Web服务器和反向代理服务器#xff0c;而Keepalived则提供了对Nginx服务的健康状态监测和故障切换功能。 下载Nginx
在服务器1和服务器2分别下载nginx
… Nginx 和 Keepalived 是常用于构建高可用性High Availability架构的工具。Nginx 是一款高性能的Web服务器和反向代理服务器而Keepalived则提供了对Nginx服务的健康状态监测和故障切换功能。 下载Nginx
在服务器1和服务器2分别下载nginx
yum install nginx
配置Nginx
在服务器1配置vim /usr/share/nginx/html/index.html 在服务器2配置 vim /usr/share/nginx/html/index.html 启动Nginx
启动服务器1和服务器2的nginx
nginx # 启动nginx
nginx -s reload # 重启nginx
nginx -t # 检查nginx配置访问服务
访问服务1 访问服务2 Keepalived架构 环境搭建
VIPIP主机名主/从192.168.2.3keepalived 1Master192.168.2.200192.168.2.4keepalived 2Backup
keepalived的安装
前置下载,keepalived需要gcc
yum install gcc
yum install openssl openssl-devel
通过链接wget获取
wget https://www.keepalived.org/software/keepalived-2.0.20.tar.gz --no-check-certificate
创建keepalived目录方便管理资源
mkdir keepalived
将压缩文件进行解压缩解压缩到指定的目录
tar -zxf keepalived-2.0.20.tar.gz -C keepalived/
对keepalived进行配置编译和安装
cd keepalived/keepalived-2.0.20./configure --sysconf/etc --prefix/usr/localmake make install
以上服务器2同理
安装完成后有两个文件需要我们认识下一个是 /etc/keepalived/keepalived.conf(keepalived的系统配置文件我们主要操作的就是该文件)一个是/usr/local/sbin目录下的keepalived,是系统配置脚本用来启动和关闭keepalived
Keepalived配置
服务器1 vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {#通知邮件当keepalived发送切换时需要发email给具体的邮箱地址notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}#设置发件人的邮箱信息notification_email_from Alexandre.Cassenfirewall.loc#指定smpt服务地址smtp_server 192.168.2.1#指定smpt服务连接超时时间smtp_connect_timeout 30#运行keepalived服务器的一个标识可以用作发送邮件的主题信息router_id keepalived1vrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}
vrrp_instance VI_1 {state MASTER #有两个值可选MASTER主 BACKUP备interface ens33 #vrrp实例绑定的接口用于发送VRRP包[当前服务器使用的网卡名称]virtual_router_id 51 #指定VRRP实例ID范围是0-255priority 100 #指定优先级优先级高的将成为MASTERadvert_int 1 #指定发送VRRP通告的间隔单位是秒authentication { #vrrp之间通信的认证信息auth_type PASS #指定认证方式。PASS简单密码认证(推荐)auth_pass 1111 #指定认证使用的密码最多8位}virtual_ipaddress { #虚拟IP地址设置虚拟IP地址供用户访问使用可设置多个一行一个192.168.2.200}
}服务器2vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {#通知邮件当keepalived发送切换时需要发email给具体的邮箱地址notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}#设置发件人的邮箱信息notification_email_from Alexandre.Cassenfirewall.loc#指定smpt服务地址smtp_server 192.168.2.1#指定smpt服务连接超时时间smtp_connect_timeout 30#运行keepalived服务器的一个标识可以用作发送邮件的主题信息router_id keepalived2vrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}
vrrp_instance VI_1 {state BACKUP#有两个值可选MASTER主 BACKUP备interface ens33 #vrrp实例绑定的接口用于发送VRRP包[当前服务器使用的网卡名称]virtual_router_id 51 #指定VRRP实例ID范围是0-255priority 90 #指定优先级优先级高的将成为MASTERadvert_int 1 #指定发送VRRP通告的间隔单位是秒authentication { #vrrp之间通信的认证信息auth_type PASS #指定认证方式。PASS简单密码认证(推荐)auth_pass 1111 #指定认证使用的密码最多8位}virtual_ipaddress { #虚拟IP地址设置虚拟IP地址供用户访问使用可设置多个一行一个192.168.2.200}
}Keepalived启动
在服务器1、2启动服务
cd /usr/local/sbin
./keepalived
测试
查看服务器1 查看服务器2虚拟IP没有存在在服务器2 当把192.168.2.3服务器上的keepalived关闭后再次查看ip
systemctl disable keepalived
systemctl stop keepalived
查看服务器1虚拟IP没有存在在服务器1 查看服务器2 虚拟IP(VIP)会在MASTER节点上当MASTER节点上的keepalived出问题以后因为BACKUP无法收到MASTER发出的VRRP状态通过信息就会直接升为MASTER。VIP也会漂移到新的MASTER。
测试Nginx
systemctl start keepalived # 启动
我们把192.168.2.3服务器的keepalived再次启动下由于它的优先级高于服务器192.168.2.4的所有它会再次成为MASTERVIP也会漂移过去然后我们再次通过浏览器访问nginx: 如果把192.168.2.3服务器的keepalived关闭掉再次访问相同的地址
Nginx状态检测脚本
效果实现了以后 我们会发现要想让vip进行切换就必须要把服务器上的keepalived进行关闭而什么时候关闭keepalived呢?应该是在keepalived所在服务器的nginx出现问题后把keepalived关闭掉就可以让VIP执行另外一台服务器但是现在这所有的操作都是通过手动来完成的我们如何能让系统自动判断当前服务器的nginx是否正确启动如果没有要能让VIP自动进行漂移 。
vrrp_script
keepalived只能做到对网络故障和keepalived本身的监控即当出现网络故障或者keepalived本身出现问题时进行切换。但是这些还不够我们还需要监控keepalived所在服务器上的其他业务比如Nginx,如果Nginx出现异常了仅仅keepalived保持正常是无法完成系统的正常工作的因此需要根据业务进程的运行状态决定是否需要进行主备切换这个时候我们可以通过编写脚本对业务进程进行检测监控。
编写脚本
vim /root/keepalived/ck_nginx.sh 这是一个 Bash 脚本用于检查 Nginx 服务是否正在运行并在 Nginx 未启动时启动它并在启动失败后关闭 Keepalived 服务
#!/bin/bash
numps -C nginx --no-header | wc -l
if [ $num -eq 0 ];then/usr/sbin/nginx #使用 which nginx 可查找到nginx的启动目录sleep 2if [ ps -C nginx --no-header | wc -l -eq 0 ]; thenkillall keepalivedfi
fi
设置权限
为脚本文件设置权限
chmod 755 ck_nginx.sh
Keepalived添加配置
vim /etc/keepalived/keepalived.conf ,将脚本添加到Keepalived配置
global_defs {...
}
vrrp_script ck_nginx {script /root/keepalived/ck_nginx.sh #执行脚本的位置interval 2 #执行脚本的周期秒为单位weight -20 #权重的计算方式
}以上服务器2同理
测试
服务器1停止nginx服务
systemctl stop nginx查看服务器1虚拟IP不在此服务器 查看服务器2 虚拟IP转移到此服务器 如果master服务死掉后backup会变成master但是当master服务又好了的时候 master此时会抢占VIP这样就会发生两次切换对业务繁忙的网站来说是不好的。所以我们要在配置文件加入 nopreempt 非抢占但是这个参数只能用于state 为backup故我们在用HA的时候最好master 和backup的state都设置成backup 让其通过priority来竞争。