博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
keepalived+nginx高可用双击主备配置说明
阅读量:6949 次
发布时间:2019-06-27

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

hot3.png

实现要点

  1. 需要安装keepalived和nginx,不需要haproxy
  2. keepalived实现两个功能,一是浮动ip,二是nginx的高可用
  3. nginx实现zuul的负载均衡
  4. keepalived和nginx必须安装在同一台机器
  5. keepalived的启动必须用root,而nginx的高可用是通过keepalived,所以keepalived和nginx都用root安装和启动快一点
  6. 至少两台机器安装keepalived和nginx并启动着,但同一个时间使用的是其中一台,当这台挂了,才会使用另一台,感觉可能两台就够了,不需要三台以上
  7. 浮动ip需要选择同一个网段的、还没使用的随便一个ip就可以

总述

21机器是vip,18、19两台机器主备。

测试

  1. 访问
  2. 停掉18的nginx,几秒后自动启动,18的keepalived自动启动nginx成功
  3. 停掉18的keepalived,访问

keepalived和nginx的经验少,后续继续分享。

keepalived配置

18keepalived配置

[root[@test](https://my.oschina.net/azibug) keepalived]# more keepalived.conf! Configuration File for keepalivedglobal_defs {   router_id test1}vrrp_script chk_nginx {    script "/etc/keepalived/check_nginx_pid.sh"    interval 5    weight 2}vrrp_instance VI_1 {    state MASTER    interface eth0    virtual_router_id 51    priority 110    nopreempt    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        1.13.22.21    }    track_script {        chk_nginx    }}[root[@test](https://my.oschina.net/azibug) keepalived]#

19keepalived配置

与18基本一样,除了:

  1. router_id要改为本机名
  2. state要改为BACKUP
[root[@test2](https://my.oschina.net/u/1253032) keepalived]# more keepalived.conf! Configuration File for keepalivedglobal_defs {   router_id test2}vrrp_script chk_nginx {    script "/etc/keepalived/check_nginx_pid.sh"    interval 5    weight 2}vrrp_instance VI_1 {    state BACKUP    interface eth0    virtual_router_id 51    priority 100    nopreempt    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    track_script {        chk_nginx    }    virtual_ipaddress {        1.13.22.21    }    }

nginx配置

18nginx配置

[root[@test](https://my.oschina.net/azibug) nginx]# more nginx.confuser  nginx;worker_processes  1;error_log  /var/log/nginx/error.log warn;pid        /var/run/nginx.pid;events {    worker_connections  1024;}http {    include       /etc/nginx/mime.types;    default_type  application/octet-stream;    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '                      '"$http_user_agent" "$http_x_forwarded_for"';    access_log  /var/log/nginx/access.log  main;    sendfile        on;    #tcp_nopush     on;    keepalive_timeout  65;    #gzip  on;    upstream upstream_nginx_zuul {        server 1.13.22.18:8181;        server 1.13.22.19:8181;    }    server {        listen 80;        location / {           proxy_set_header Host $host:$server_port;           proxy_pass http://upstream_nginx_zuul;        }    }    include /etc/nginx/conf.d/*.conf;}[root@test1 nginx]#

19nginx配置

和18配置完全一样。

[root@test nginx]# more nginx.confuser  nginx;worker_processes  1;error_log  /var/log/nginx/error.log warn;pid        /var/run/nginx.pid;events {    worker_connections  1024;}http {    include       /etc/nginx/mime.types;    default_type  application/octet-stream;    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '                      '"$http_user_agent" "$http_x_forwarded_for"';    access_log  /var/log/nginx/access.log  main;    sendfile        on;    #tcp_nopush     on;    keepalive_timeout  65;    #gzip  on;    upstream upstream_nginx_zuul {        server 1.13.22.18:8181;        server 1.13.22.19:8181;    }    server {        listen 80;        location / {           proxy_set_header Host $host:$server_port;           proxy_pass http://upstream_nginx_zuul;        }    }    include /etc/nginx/conf.d/*.conf;}

高可用检查脚本

两台机器一样。

[root@test2 keepalived]# more check_nginx_pid.sh #!/bin/bashLOG_DIR="/etc/keepalived"  echo $(date "+%Y-%m-%d %H:%M:%S") "check nginx status" >> $LOG_DIR/log_nginx.log A=`ps -C nginx --no-header |wc -l`        if [ $A -eq 0 ];then                                  /usr/sbin/nginx                #重启nginx      echo  $(date "+%Y-%m-%d %H:%M:%S") "restarting nginx..." >> $LOG_DIR/restart.log      sleep 2      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移              #killall keepalived                                  echo $(date "+%Y-%m-%d %H:%M:%S") "killing keepalived..." >> $LOG_DIR/restart.log      fifi

转载于:https://my.oschina.net/u/2464371/blog/1913761

你可能感兴趣的文章
CMD命令视频教程-初识CMD-0
查看>>
八皇后问题
查看>>
Tomcat7 搭建 websocket服务
查看>>
关于java调用的存贮过程
查看>>
JSTL核心标签:taglib指令代码分享
查看>>
Java Web学习总结(12)——使用Session防止表单重复提交
查看>>
整合apache和tomcat构建Web服务器
查看>>
我的友情链接
查看>>
python获取按字典值排序的列表
查看>>
iis短文件名漏洞解决方法
查看>>
pfSense各版本对应FreeBSD核心情况
查看>>
X3-02 gprs 设置
查看>>
单例模式
查看>>
Exchange 2010 禁用通讯组后,如何再启用。
查看>>
从hiredis使用出core谈谈redis多线程的使用
查看>>
leetcode解题报告:198 House Robber
查看>>
Spring @Value 无法获取到properties文件中的值
查看>>
Win8 采用受信任启动保障用户安全
查看>>
linux 安装 jdk bin
查看>>
数据库原理 西安电子科技大学(第三版) 付婷婷 第三章 课后习题答案
查看>>