翼度科技»论坛 云主机 服务器技术 查看内容

Nginx搭建高可用的实现

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
1、高可用概念

一台nginx宕机了,还可以切换到另一台nginx上继续工作,让用户继续访问后台服务器


2、准备工作


  • (1)需要两台 nginx 服务器
  • (2)需要 keepalived
  • (3)需要虚拟 ip


3、高可用准备工作

(1)需要两台服务器 192.168.17.129 和 192.168.17.131
(2)在两台服务器安装 nginx
​ 这里如果不想再去安装一遍 Nginx ,可以直接克隆 CentOs 。
(3)在两台服务器安装 keepalived
使用命令安装:yum install keepalived –y
安装之后,在 /etc 里面生成目录 keepalived,有文件
  1. keepalived.conf
复制代码


4、完成高可用配置(主从配置)


(1)主机 Nginx 修改/etc/keepalived/keepalivec.conf 配置文件
  1. ! Configuration File for keepalived

  2. global_defs {

  3.     notification_email {

  4.         acassen@firewall.loc

  5.         failover@firewall.loc

  6.         sysadmin@firewall.loc
  7.      }

  8.         notification_email_from Alexandre.Cassen@firewall.loc

  9.         smtp_server 192.168.17.129

  10.         smtp_connect_timeout 30

  11.         router_id LVS_DEVEL # 主机名字
  12. }


  13. vrrp_script chk_http_port {
  14.         script "/usr/local/src/nginx_check.sh"
  15.         interval 2 #(检测脚本执行的间隔)
  16.         weight 2 # 权重
  17.    }
  18.         vrrp_instance VI_1 {
  19.         state MASTER # 备份服务器上将 MASTER 改为 BACKUP
  20.         interface ens33 # 网卡
  21.         virtual_router_id 51  # 主、备机的 virtual_router_id 必须相同
  22.         priority 100  # 主、备机取不同的优先级,主机值较大,备份机值较小
  23.         advert_int 1
  24.         authentication {
  25.                 auth_type PASS
  26.                 auth_pass 1111
  27.         }

  28.         virtual_ipaddress {
  29.              192.168.77.50 # VRRP H 虚拟地址
  30.         }

  31. }
复制代码
(2)主机 /usr/local/src添加检测脚本:nginx_check.sh
  1. #!/bin/bash
  2. A=`ps -C nginx –no-header | wc -l`
  3. if [ $A -eq 0 ];then
  4.         /usr/local/nginx/sbin/nginx
  5.         sleep 2
  6.         if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
  7.             killall keepalived
  8.         fi
  9. fi
复制代码
(3) 从机 Nginx修改/etc/keepalived/keepalivec.conf 配置文件
  1. ! Configuration File for keepalived

  2. global_defs {

  3.     notification_email {

  4.         acassen@firewall.loc

  5.         failover@firewall.loc

  6.         sysadmin@firewall.loc

  7.      }

  8.         notification_email_from Alexandre.Cassen@firewall.loc

  9.         smtp_server 192.168.17.129

  10.         smtp_connect_timeout 30

  11.         router_id LVS_DEVEL
  12. }


  13. vrrp_script chk_http_port {
  14.         script "/usr/local/src/nginx_check.sh"
  15.         interval 2
  16.         weight 2
  17.    }
  18.         vrrp_instance VI_1 {
  19.         state BACKUP # 修改为从机 BACKUP
  20.         interface ens33 # 修改为从机 ip
  21.         virtual_router_id 51
  22.         priority 90 # 优先级比主机低
  23.         advert_int 1
  24.         authentication {
  25.             auth_type PASS
  26.             auth_pass 1111
  27.         }

  28.         virtual_ipaddress {
  29.             192.168.77.50
  30.         }

  31. }
复制代码
(4)从机 /usr/local/src添加检测脚本:nginx_check.sh
  1. #!/bin/bash
  2. A=`ps -C nginx –no-header | wc -l`
  3. if [ $A -eq 0 ];then
  4.         /usr/local/nginx/sbin/nginx
  5.         sleep 2
  6.         if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
  7.             killall keepalived
  8.         fi
  9. fi
复制代码
(5)、启动 Nginx

分别启动主从 Nginx ,切换到
  1. /usr/local/nginx/sbin/
复制代码
,执行./nginx

(6)、主从都启动 keepalived

CentoS6启动命令
  1. service keepalived start
复制代码
Centos7启动命令
  1. systemctl start keepalived.service
复制代码
(7)、主从都测试 keepalived 是否启动成功
  1. ps -ef | grep keepalived
复制代码


5、最终测试

此时便可以通过虚拟 ip 地址访问到 Nginx 。


6、将从机nginx和keepalived停掉,继续访问虚拟ip,依旧可以方位到nginx,高可用至此完成。


到此这篇关于Nginx搭建高可用的实现的文章就介绍到这了,更多相关Nginx搭建高可用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/server/326755dgy.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具