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/bash count=0 for (( 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 fi done if [ "$count" != "0" ]; then killall keepalived exit 1 else exit 0 fi
这段角本的意思就是说每次的心跳检查会执行一个for循环,访问http://localhost:81,在for的2次循环中如果返回的状态都不是200就会关闭keepalived。这个角本在105和118两台机器上都要准备好。
设置118机器上的keepalived为主节点,105机器上的keepalived为从节点,它们两个的配置文件差不太多
vi /etc/keepalived/keepalived.conf
118机器keepalived的配置文件
! Configuration File for keepalived vrrp_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 keepalived vrrp_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 nginxsrc cd 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
总结
以上所述是小编给大家介绍的keepalived双机热备nginx的配置方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍Docker+keepalived+nginx实现主从热备的方法示例,包括了Docker+keepalived+nginx实现主从热备的方法示例的使用技巧和注意事项,需要的朋友参考一下 前言 为解决单点故障,我们需要配置主从热备方案,服务器数量有限,故使用Docker模拟安装配置。 本次配置默认已经安装了Docker。 配置环境:centos7 64位 docker版本:Docker
我正在尝试通过两个nginx代理发出websocket请求。是做SSR(服务器端渲染) 我的堆栈是这样的:外部世界 当我在做《外部世界》的时候 Websocket连接建立得非常好。但是当我实现rendora(SSR)并向nginx添加另一个代理时,它不起作用。握手时 Websocket 连接失败。我猜“升级”请求在我的nginx服务器的某个地方失败了。我的nginx conf如下: 因此,位置/端
本文向大家介绍keepalived结合nginx实现nginx高可用的方法,包括了keepalived结合nginx实现nginx高可用的方法的使用技巧和注意事项,需要的朋友参考一下 1.简介 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(B
说明 高可用 HA(High Availability),简单讲就是:我某个应用挂了,自动有另外应用起来接着扛着,致使整个服务对外来看是没有中断过的。这里的重点就是不中断,致使公司整个业务能不断进行中,把影响减到最小,赚得更多。 因为要不中断,所以我们就需要用到了 Keepalived。Keepalived 一般不会单独使用,基本都是跟负载均衡软件(LVS、HAProxy、Nginx)一起工作来达
主要内容:1. 第一个域名/网站配置,2. 第二个域名/网站配置,3. 第三个域名/网站配置,4. 优化配置在上一节中,我们学习了Nginx+PHP7+MySQL的安装配置,在这一篇文章中,我们来学习如何在一个Nginx服务器中配置多个站点。 假要你所在的公司由于预算问题,现在只能提供一台服务器,但是有以下几个网站:, ,需要部署,并且你已经根据我们上一篇文章中安装配置了,实现以下需求。 是公司的电子商务平台。 是公司的电子商务平台子站,用于移动端用户的访问。 是公司的用户关系管理系统。 现在为
本文向大家介绍keepalived+nginx高可用实现方法示例,包括了keepalived+nginx高可用实现方法示例的使用技巧和注意事项,需要的朋友参考一下 1.keepalived介绍 keepalived最初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了实现高可用的VRRP功能。keepalived除了能够管理LVS软件外,还能支持其他服务