博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
keepalived双机热备nginx
阅读量:7236 次
发布时间:2019-06-29

本文共 3733 字,大约阅读时间需要 12 分钟。

 nginx目前是我最常用的反向代理服务,线上环境为了能更好的应对突发情况,一般会使用keepalived双机热备nginx或者使用docker跑nginx集群,keepalived是比较传统的方式,虽然用docker跑nginx集群更方便,但传统的方式总是有他的可取之处,并且多学一些东西也很好。以后也会写如何使用docker跑nginx集群。

  环境准备:

  2台centos: 192.168.0.105 和192.168.0.118, 虚拟IP(VIP)为192.168.0.119

配置keepavlived

  分别在105和118上安装keepalived

yum install keepalived

  准备心跳角本

  keepalived的配置相当灵活,可以定时执行角本命令,用于心跳检查,比如,我们访问nginx发现nginx不可访问时,就关闭keepalived,从而切换到从nginx来实现不间断的服务支持。

vi /etc/keepalived/keepalived.conf
#!/bin/bashcount=0for (( k=0; k<2; k++ ))do   check_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" http://localhost:81 -o /dev/null )   if [ "$check_code" != "200" ]; then       count=count +1       continue   else       count = 0       break   fidoneif [ "$count" != "0" ]; then   killall keepalived   exit 1else   exit 0fi

  这段角本的意思就是说每次的心跳检查会执行一个for循环,访问http://localhost:81,在for的2次循环中如果返回的状态都不是200就会关闭keepalived。这个角本在105和118两台机器上都要准备好。

  设置118机器上的keepalived为主节点,105机器上的keepalived为从节点,它们两个的配置文件差不太多

vi /etc/keepalived/keepalived.conf

  118机器keepalived的配置文件

! Configuration File for keepalivedvrrp_script chk_nginx {   script "/etc/keepalived/check_nginx.sh" # 心跳检测角本   interval 2 #脚本执行间隔,每2s检测一次   weight -5 #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5   fall 3 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)   rise 2 #检测1次成功就算成功。但不修改优先级}vrrp_instance VI_1 {   state MASTER #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器   interface eth0 #指定监测网络的接口。实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的   mcast_src_ip  192.168.0.118 ## 发送多播数据包时的源IP地址   virtual_router_id 51 #虚拟路由标识,MASTER和BACKUP必须是一致的   priority 100 #定义优先级,数字越大,优先级越高   advert_int 2 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒   authentication { #设置验证类型和密码。主从必须一样       auth_type PASS #设置vrrp验证类型,主要有PASS和AH两种       auth_pass 1111 #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信   }   virtual_ipaddress {       192.168.0.119 #VRRP 虚拟地址 如果有多个VIP,换行填写   }   track_script {      chk_nginx # 心跳脚本,即在 vrrp_script 部分指定的名字   }}

115机器上的角本对上面的角本稍做变动即可

改变 state MASTER -> state BACKUP,priority 100 -> priority 90,mcast_src_ip 192.168.0.118 -> mcast_src_ip 192.168.0.105。其他的地方保持不变,是不是很简单。

! Configuration File for keepalivedvrrp_script chk_nginx {   script "/etc/keepalived/check_nginx.sh"   interval 2   weight -5}vrrp_instance VI_1 {   state BACKUP # 修改   interface eth0   mcast_src_ip  192.168.0.105 # 修改 为本机IP   virtual_router_id 51   priority 90  #数字变小   advert_int 2   authentication {       auth_type PASS       auth_pass 1111   }   virtual_ipaddress {       192.168.0.119   }   track_script {      chk_nginx   }}

 

到这里keepalived的简单配置就完成了下面就启动keepalived

service keepalived start

 

安装Nginx

 
查看nginx的依赖库是否完整
 
rpm -qa zlib
rpm -qa zlib-devel
rpm -qa openssl
rpm -qa openssl-devel
rpm -qa pcre
rpm -qa pcre-devel
rpm -qa gcc
如果没有就安装
 
yum -y install gcc zlib zlib-devel openssl openssl-devel pcre-devel

 

下载并解压nginx
mkdir nginxsrccd nginxsrc/
 
 
wget http://nginx.org/download/nginx-1.13.9.tar.gz tar zxvf nginx-1.13.9.tar.gz cd nginx-1.13.9/

 

 
./configure --prefix=/usr/local/nginx   --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module
 
安装在/usr/local/nginx/sbin/nginx 目录下
 
 
make&&make install

 

 
执行成功后会显示leaving directory 
 
 
启动
/usr/local/nginx/sbin/nginx

 

 
 
检查
ps aux|grep nginx

 

 
 
开机启动
vi /etc/rc.local
添加一行
/usr/local/nginx/sbin/nginx
 
 
 

 因为我的机器上80端口被别的应用占用了,所以就修改105和118的 nginx.conf 把端口80 修改为81

vi /usr/local/nginx/conf/nginx.conf

 分别个性105 和119上的index.html 加上一个ip以便们们识别打开的是哪个ip上的index.html

vi /usr/local/nginx/html/index.html 

 

 

nginx重新加载配置

/usr/local/nginx/sbin/nginx -s reload

好了,我们访问一下

curl 192.168.0.119:81

返回的html是 118机器上的index.html

 现在我们把118的nginx停止

/usr/local/nginx/sbin/nginx -s stop

这时118上的keepalived的心跳检查角本发现nginx无法访问会把keepalived关闭,然后转向从节点

我们再访问一下119

curl 192.168.0.119:81

 

在118上重新启动nginx和keepalived

再访问119 返回的网址是118上的index.html

转载地址:http://aggfm.baihongyu.com/

你可能感兴趣的文章
HTTP状态码详解
查看>>
MFC多线程
查看>>
jk记录在这儿
查看>>
RHEL5.3跑MYSQL5.5时出现系统崩溃
查看>>
windows2008密码遗忘的补救
查看>>
Java中的XML操作
查看>>
lvs负载均衡实践之lvs-nat
查看>>
apache2.4 + php7.2 + mysql 配置指南2018版
查看>>
Codeigniter:如何写一个好的Model
查看>>
神经网络之父Hinton回加拿大办AI研究所,和美国大公司抢人才
查看>>
Linux 基金会董事 Jim Zemlin:全球开源可持续增长将带来更多价值
查看>>
说说WordPress的主查询函数-query_posts()
查看>>
认识Linux中的LVM PV VG LV
查看>>
SEO如何写好文章标题
查看>>
剖析产品 找准用户 做个创业“老炮儿” --司马亮创业回忆录(二)
查看>>
How GoldenGate process consumes memory
查看>>
zabbix触发器无法执行动作
查看>>
openstack 之 控制节点物理机备份
查看>>
安装docker-compose的两种方式
查看>>
CentOS7.3编译安装MariaDB10.2.12
查看>>