首页 > 系统相关 >Keepalived+Nginx 高可用(主从模式)

Keepalived+Nginx 高可用(主从模式)

时间:2024-10-24 15:44:27浏览次数:1  
标签:nginx Keepalived keepalived 192.168 节点 Nginx usr local 主从

 1. 环境说明

vip ip 操作系统 nginx端口 主从说明
192.168.115.150 192.168.115.148 CentOS Linux release 7.6.1810 (Core) 8443 主节点
192.168.115.150 192.168.115.149 CentOS Linux release 7.6.1810 (Core) 8443 从节点

2台机器都需部署nginx和keealive服务,nginx配置文件保持一致,keepalive服务配置存在差异

2. 部署nginx

3. 部署keepalive

3.1 安装

1、下载
wget https://www.keepalived.org/software/keepalived-2.2.2.tar.gz

2、解压
tar -zxvf keepalived-2.2.2.tar.gz

3、安装依赖
yum -y install libnl libnl-devel  
否则,会报错编译会报错:*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.

4、编译安装
cd  keepalived-2.2.2
./configure --prefix=/usr/local/keepalived 
make && make install 

 

3.2 修改配置

1、修改keepalive配置

cp -raf /usr/local/keepalived/etc/keepalived/keepalived.conf /usr/local/keepalived/etc/keepalived/keepalived.conf_default
vim /usr/local/keepalived/etc/keepalived/keepalived.conf 
主节点192.168.115.148和从节点192.168.115.149存在差异,具体配置文件如下:

主节点192.168.115.148:/usr/local/keepalived/etc/keepalived/keepalived.conf配置如下:

global_defs {               
   router_id Nginx_01
   script_user root
}
vrrp_script check_nginx {
        script "/usr/local/nginx/keepalived/check_nginx.sh"      #nginx检测脚本
        interval 2
    weight -5
    fall 3
    rise 2
}
vrrp_instance VI_1 {
    state MASTER
    interface ens192                         #指定HA监测网络的接口。与本机 IP 地址所在的网络接口相同,可通过ip addr 查看
    virtual_router_id 33                     #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。即同一vrrp_instance下,MASTER和BACKUP必须是一致
    priority 100                             #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级
    advert_int 1
    authentication {                         #设置验证类型和密码。主从必须一样
        auth_type PASS                       #设置vrrp验证类型,主要有PASS和AH两种
        auth_pass 1111                       #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
    }
    virtual_ipaddress {                      #VRRP HA 虚拟地址 如果有多个VIP,继续换行填写
     192.168.115.150
    }
    track_script {
        check_nginx
    }
} 

从节点192.168.115.149:/usr/local/keepalived/etc/keepalived/keepalived.conf配置如下:
global_defs {               
   script_user root
   router_id Nginx_02
}
vrrp_script check_nginx {
    script "/usr/local/nginx/keepalived/check_nginx.sh"
    interval 2
    weight -5
    fall 3
    rise 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens192
    virtual_router_id 33
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
      192.168.115.150
    }
    track_script {
        check_nginx
    }
}

2、新建nginx检测脚本

vim /usr/local/nginx/keepalived/check_nginx.sh
chmod +x  /usr/local/nginx/keepalived/check_nginx.sh

主从节点192.168.115.148/149 nginx检测脚本一致,/usr/local/nginx/keepalived/check_nginx.sh配置文件如下:
! /bin/bash
pidof nginx
if [ $? -ne 0 ];then
systemctl stop keepalived
fi

3.3 启动

#开机自启动
systemctl  enable keepalived

#查看状态
systemctl status keepalived

#启动
systemctl start keepalived

#加载配置
systemctl daemon-reload

#重启
systemctl restart keepalived

3.4 特殊说明

如未遇到以下情况,忽略即可

1、启动问题

直接启动如果报错,可能是systemctl管理未指定配置文件,修改配置systemctl自启动文件,重新加载配置文件并重新启动keepalive

vim /usr/lib/systemd/system/keepalived.service

[Unit]
Description=LVS and VRRP High Availability Monitor
After=network-online.target syslog.target 
Wants=network-online.target 

[Service]
Type=forking
PIDFile=/run/keepalived.pid
KillMode=process
EnvironmentFile=-/usr/local/keepalived/etc/sysconfig/keepalived
#ExecStart=/usr/local/keepalived/sbin/keepalived  $KEEPALIVED_OPTIONS   ##注释默认
ExecStart=/usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf ##指定配置文件
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

 2、防火墙配置

主从节点启动keepalived之后, 正常情况下vip只在主节点上存在,而从节点在主节点故障时接管VIP。

如果发现VIP在两个节点上同时存在,要配置防火墙以防止VIP在两个节点上同时存在,需要确保VRRP协议能够在两个节点间正常通信

#允许VRRP协议通过防火墙
firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent

#重新加载 firewalld 
firewall-cmd --reload

4. 高可用测试

1、主从2个节点分别先启动nginx服务再keepalived服务,确保vip只在主节点上存在

2、模拟主节点nginx服务停止:停止nginx服务

检查主节点keepalived和vip情况,正常情况为:主节点keepalived停止,vip漂移到从节点,流量转移到从节点

3、模拟主节点nginx服务恢复:启动nginx服务和keepalived服务

 检查vip情况,正常情况为:vip漂移到主节点,流量转移到主节点,从节点恢复空间状态

 

 

标签:nginx,Keepalived,keepalived,192.168,节点,Nginx,usr,local,主从
From: https://www.cnblogs.com/MeeSeeks-B/p/18496584

相关文章

  • nginx总结
    使用auth_basic控制访问nginx代理的网站,直接访问如果需要添加安全性,如需要输入用户名+密码才能访问页面,可以通过nginx的auth_baisc配置来实现检查htpasswd一般nginx的安装之后会自带或者nginx容器镜像自带root@ea6255db9f51:/config/nginx/site-confs#htpasswdUsage:......
  • Nginx的 MIME TYPE问题导致的mjs文件加载出错的问题解决
    .mjs文件:明确表示使用ES6模块系统(ECMAScriptModules)。 在服务器用Nginx部署前端项目后,出现下面这种问题Failedtoloadmodulescript:ExpectedaJavaScriptmodulescriptbuttheserverrespondedwithaMIMEtypeof"application/octet-stream".StrictMIMEt......
  • nginx 默认60超时需要修改的地址
    1、这个是转发的nginx的vhost模块的php,添加以下代码 ,如果没有,可以忽略location/{if($query_string~*"\.\./|\./"){return404;}proxy_read_timeout300s;#增加到5分钟proxy_connect_timeout300s;prox......
  • https免费nginx证书
    快捷阅读:先安装好nginx,并配置好80端口的正常访问#安装Nginxyuminstall-ynginx#设置开机启动systemctlenablenginx#开启nginxsystemctlstartnginx#重启nginxsystemctlrestartnginx#nginx重新加载配置文件systemctlreloadnginx#新增nginx网站配置......
  • centos7 nginx优化
    优化nginx进程个数的策略在高并发、高访问量的web服务场景,需要事先启动好更多的nginx进程,以保证快速响应并处理大量并发用户的请求。worker_processes1;一般调整到与CPU的颗数相同查看LInux可查看CPU个数及总核数grepprocessor/proc/cpuinfo|wc-l优化绑定不同......
  • Nginx配置基于IP地址的访问控制
    访问控制基于模块ngx_http_access_module实现,可以通过匹配客户端源IP地址进行限制在location中,通过allow、deny配置仅允许172.16.0.1的主机访问http://www.uhn.cn/admin其他地址均拒绝location=/admin{root/data/nginx/html/uhn;allow172.16.0.1/24;denyall;}locati......
  • Nginx配置auth_basic认证,让用户访问指定页面时输入用户名密码认证
    配置方法:[root@localhost~]#yum-yinstallhttpd-toolsLoadedplugins:fastestmirrorLoadingmirrorspeedsfromcachedhostfileResolvingDependencies-->Runningtransactioncheck--->Packagehttpd-tools.x86_640:2.4.6-99.el7.centos.1willbeinstall......
  • Nginx根据返回的错误码,自定义错误页面回显
    在/data/nginx/html/uhn目录下创建一个error.html[root@localhost~]#echo"errorpage">/data/nginx/html/uhn/error.html然后修改配置文件,将 500502503504404的错误页面指向/error.html页面[root@localhost~]#cdweb[[email protected]]#viuhn.confserver......
  • 兰空图床搭建新思路:对接阿里云oss,nginx反向代理。
    我认为,图床搭建有几个关键点:提供api方便上传,且方便管理。空间够大,且稳定。不怕被盗刷流量。基于这几点,我想到了一种成本比较低的方案,即选择一台不限流量的阿里云vps+同地域的oss,上传通过兰空图床实现,访问通过nginx反向代理阿里云内网oss来实现。比如,购买阿里云99块钱的vps......
  • Nginx:各种问题
    1、nginx:commandnotfound使用ll查看文件权限,看nginx的权限是否为rw-r--r--如果是的话,说明该文件现在没有执行权限。使用指令chmod755./sbin/nginx把该文件的可执行权限开启。 2、auto/options:Nosuchfileordirectory 出现于:bash./configure配置nginx时解决方......