反饋已提交
網絡繁忙
Nginx 可以用来作为反向代理服务器,来提供负载均衡的能力,使我们的 Web 服务器,能够水平扩容,从而处理更多的用户请求,但是反向代理服务器又变成了一个单点,当反向代理服务器挂了,整合 Web 服务器就不能被外界访问到,所以我们必须要保证反向代理服务器的高可用。
而 Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 Web 前端服务的高可用。
大家可以参考:Linux 系统安装配置 Nginx
来给需要的服务器都安装并配置好 Nginx
执行命令:
yum -y install keepalived
访问网址:https://www.keepalived.org/download.html 并下载 Keepalived 的安装包。
tar -zxvf keepalived-2.0.18.tar.gz # 解压
cd keepalived-2.0.18/
./configure --prefix=/usr/local/keepalived # 编译
make && make install # 安装
prefix 指定安装的目录,编译过程一般都不太顺利,会报各种各样的错误,基本上都是缺少编译环境问题。
可以看到缺少openssl,按照 Linux 系统安装配置 Nginx 中的方法安装 openssl 即可。
因为没有使用 Keepalived 的默认路径安装(默认是/usr/local) ,安装完成之后,需要做一些工作复制默认配置文件到默认路径。
mkdir /etc/keepalivedcp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
复制 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/
设置 keepalived 服务开机启动
chkconfig keepalived on
路径为/etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs { ## keepalived 自带的邮件提醒需要开启 sendmail 服务。 建议用独立的监控或第三方 SMTP router_id pp1 ## 标识本节点的字条串,通常为 hostname} ## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。如果脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加。如果脚本执行结果非 0,并且 weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中 priority 对应的值。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 ens33 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同, 我的是 ens33 virtual_router_id 33 ## 虚拟路由的 ID 号, 两个节点设置必须一样, 可选 IP 最后一段使用, 相同的 VRID 为一个组,他将决定多播的 MAC 地址 mcast_src_ip 192.168.1.100 ## 本机 IP 地址 priority 200 ## 节点优先级, 值范围 0-254, MASTER 要比 BACKUP 高 advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样, 默认 1s ## 设置验证信息,两个节点必须一致 authentication { auth_type PASS auth_pass 1111 ## 真实生产,按需求对应该过来 } ## 将 track_script 块加入 instance 配置块 track_script { chk_nginx ## 执行 Nginx 监控的服务 } # # 虚拟 IP 池, 两个节点设置必须一样 virtual_ipaddress { 192.168.1.77 ## 虚拟 ip,可以定义多个 }}
! Configuration File for keepalivedglobal_defs { router_id pp2}vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight -20}vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 33 mcast_src_ip 192.168.1.65 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_nginx } virtual_ipaddress { 192.168.1.77 }}
需要注意的配置说明:
1)router_id pp1 ## 标识本节点的字条串,通常为 hostname
2)script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
3)state MASTER/BACKUP ##说明主备
4)interface ens33 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同, 我的是 ens33
5)mcast_src_ip 192.168.1.100 ## 本机 IP 地址
6)priority 200 ## 节点优先级, 值范围 0-254, MASTER 要比 BACKUP 高
7)virtual_ipaddress ##虚拟 ip,即VIP,可以定义多个
编写 Nginx 状态检测脚本 /etc/keepalived/nginx_check.sh (已在 Keepalived.conf 中配置)脚本要求。
#!/bin/bashA=`ps -C nginx –no-header |wc -l`if [ $A -eq 0 ];then/usr/nginx/sbin/nginxsleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalivedfifi
赋予文件权限:chmod +x /etc/keepalived/nginx_check.sh
systemctl start keepalived
1)同时启动两台服务器,测试keepalive master主服务器是否拥有VIP虚拟IP预期结果:a.主master服务器拥有VIPb.能够通过VIP访问相应的nginx及下面相应的文件 2)关闭keepalive master 主服务器的nginx ,查询是否会通过脚本关闭keepalive并释放VIP预期结果:a.nginx关闭,keepalive根据脚本自动关闭,通过相对于端口也无法访问3)启动 keepalive master 主服务器,查询VIP的拥有情况预期结果:a.master 主服务器抢占VIP,因为权重的配置比BACKUP的大 4)同时关闭两台服务器的nginx,测试访问情况预期结果:a.相应的端口关闭,keepalive主动关闭,相对应的访问项目不了
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉