首页 > 系统相关 >nginx+keepalived组成高可用集群

nginx+keepalived组成高可用集群

时间:2024-02-06 13:47:27浏览次数:25  
标签:addr ip keepalived 网卡 nginx 集群 check

注意:用keepalived将多台nginx组成高可用集群时,nginx不能用docker启动
1 下载 keepalived: yum -y install keepalived
2 查看网卡: ip addr ,有eth0,en33这种的就是网卡名,inet后面是ip地址,一个网卡还可以绑定多个ip地址,
比如给eth0网卡添加192.168.0.150ip命令: ip addr add 192.168.0.150/24 dev eth0
3 编辑keepalived配置文件(主机从机都要配): vim /etc/keepalived/keepalived.conf
删除 global_defs中的 vrrp_skip_check_adv_addr 和 vrrp_strict
vrrp_instance VI_1 {
state MASTER :master表示主,backup表示从
interface eth0 :网卡名,用ip addr命令查看网卡名
virtual_router_id 51:主从都一样即可
priority 100 :保证主比从大就行
advert_int 1
authentication { :主从之间认证的用户名密码
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.100 //虚拟ip,主从设成一样就行,腾讯云服务器需要申请VIP,并将VIP和公网ip进行绑定
}
}
4: 开启keepalived命令: systemctl start keepalived,开启后再执行 ip addr就会看到eth0网卡下多了配置的虚拟ip
如果执行 systemctl stop keepalived再查看 ip addr,就会发现eth0网卡下的虚拟ip消失了

5 在/etc/keepalived目录中创建check_nginx.sh脚本,让keepalived监控nginx运行状态

#!/bin/bash
A=`ps -C nginx --no-header |wc -l` //统计nignx进程数
if [ $A -eq 0 ];then //如果进程数为0说明nginx没启动,则
/usr/local/nginx/sbin/nginx (这个是nginx所在目录,每个机器nginx安装目录可能不一样) //启动nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then //启动后再次查看nginx进程数
exit 1 // 如果进程数还是0表示nginx启动失败,就结束keepalived进程
else
exit 0
fi
else
exit 0
fi
给脚本添加可执行权限
6:把启动脚本添加到keepalived配置文件中去:
6.1添加
vrrp_script check_nginx { #定义一个策略,策略名为"check_nginx"
script "/etc/keepalived/check_nginx.sh" #执行一次/etc/keepalived/check_nginx.sh脚本文件
interval 1 #每隔1秒钟
weight -20 #如果发现nginx启动失败了,将当前的机器的priority-20
}
6.2 vrrp_instance中添加:
track_script { #指定keepalived跟踪策略为 "check_nginx"
check_nginx
}

主从节点都启动nginx和keepalived以后,执行ip addr命令,正常情况下只有主节点网络有虚拟ip,从节点没有虚拟ip,如果主节点nginx挂掉并且一直起不来,主节点的
keepalived也会停止运行,从节点的keepalived收不到主节点发送的心跳消息后就会把自己升成主节点,虚拟Ip就会出现在从节点网卡上

标签:addr,ip,keepalived,网卡,nginx,集群,check
From: https://www.cnblogs.com/1--2/p/18009580

相关文章

  • Nginx错误 open() "/usr/local/nginx/proxy_temp/x/xx/xxxxxxxx" failed (13: Permiss
    问题:设置client_max_body不起作用(notwroking)发现:nginxerror.log中有 open()"/usr/local/nginx/proxy_temp/x/xx/xxxxxxxx"failed(13:Permissiondenied)whilereadingupstream解决办法:首先查看psaux|grep"nginx:workerprocess"当前nginx的用户是谁:如nginx......
  • Nginx配置TCP/UDP流量转发
    #usernobody;worker_processes1;#error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#pidlogs/nginx.pid;events{worker_connections1024;}stream{log_formatmain'$remote_addr[$tim......
  • 48从零开始用Rust编写nginx,搭建一个简单又好看官方网站
    wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,负载均衡,静态文件服务器,websocket代理,四层TCP/UDP转发,内网穿透等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/tickbh/wmpro......
  • nginx: 当HTTPS资源引入HTTP导致报错blocked:mixed-content (混合加载/Mixed Content)如
    location/{expires12h;if($request_uri~*"(php|jsp|cgi|asp|aspx)"){expires0;}proxy_passhttp://127.0.0.1:8181;proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forw......
  • windows 下nginx 部署VUE
    一、下载nginx   nginx下载地址:https://nginx.org/en/download.html?utm_source=so二、 nginx 命令1.win+r打开cmd;cd到nginx安装目录2.启动:startnginx3.重启服务:nginx-sreload 三、nginx 配置文件notepad++ 插件notePad++下载nginx......
  • prometheus监控告警多个es集群
    exporter安装   分别在两个集群中的任一节点安装elasticsearch_exporter   节点1安装     nohup./elasticsearch_exporter--es.all--es.indices--es.cluster_settings--es.indices_settings--es.shards--es.snapshots--es.timeout=10s--web.list......
  • rancher中的集群删除不掉
    1.在rancher中查看集群的yaml找到对应的集群id 2.在安装rancher的服务器上查看接入的集群idkubectlgetclusters.management.cattle.io然后找到相应的集群id编辑yamlkubectleditclusters.management.cattle.ioc-vr87h在编辑模式下删除finalizers下的内容,将finalizers......
  • 将nginx交给service管理
    #!/bin/bash#chkconfig:23459999prot=80nginx=/usr/local/nginx/sbin/nginxcheck(){!$nginx-tq&&echo"致命错误:配置文件错误"&&exit}start(){checknetstat-tln|grep-q":80\>"&&echo"$prot端口被占用"......
  • LVS Nginx HAProxy区别
    LVS抗负载能力强,性能高,能达到F5硬件的60%,对内存和cpu资源消耗比较低工作在四层仅作分发之用,通过vrrp协议转发,具体流量由linux内核处理,没有流量的产生稳定性、可靠性好,自身有完整的双机热备方案,如LVS+keepalived应用范围比较广,可以对所有应用做负载均衡配置性比较低,减少人为出错的概......
  • Nginx--安装&&配置文件
    官网:http://nginx.org/en/download.htmlnginx版本:1.18一 安装1下载预编译环境(预编译报错需要安装什么库直接在库名后面接-devel 使用yum下载)yum-yinstallpcre-developenssl-develgccgcc-c++2 创建用户,解压包useradd-M-r-s/sbin/nologinnginxtarxvfnginx-1.......