设为首页 收藏本站
查看: 573|回复: 0

[经验分享] nginx+keepalived完善

[复制链接]

尚未签到

发表于 2018-11-12 07:39:27 | 显示全部楼层 |阅读模式
  nginx+keepalived 双机互备的文章,写那篇文章的时候没有想过如果apache或者nginx 挂了,而 keepalived 或者 机器没有死,那么主辅是不会切换的,今天就研究了一下该如何监控 nginx进程呢,看官方站看到了。vrrp_script 功能,但是用他的方法实在形不通,可能是我的方法不对,或者是个BUG。所以后来我自己写了个小脚本来完成工作。
?xml:namespace>  很明显的看出 server 2 已经接管了,已经变为 MASTER 了
  可以看出keepalived 的进程已经停到
  这时候看server 2的日志,看是否已经接管
  Apr 20 18:41:23 varnish Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
  Apr 20 18:41:24 varnish Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
  Apr 20 18:41:24 varnish Keepalived_vrrp: Netlink: skipping nl_cmd msg...
  这时候看server 1的日志
  Apr 20 18:41:26 nginx Keepalived_healthcheckers: Terminating Healthchecker child process on signal
  Apr 20 18:41:26 nginx Keepalived_vrrp: Terminating VRRP child process on signal
  看日志可以看出,两台服务器的 MASTRE 和 BACUKUP 已经都正常了
  现在我们在 server 1 把 nginx 服务器停到
  Server 1 $> killall nginx
  监控 server 2的日志
  Apr2018:38:23 varnish Keepalived_healthcheckers: Opening file '/etc/keepalived/keepalived.conf'.
  Apr 20 18:38:23 varnish Keepalived_healthcheckers: Configuration is using : 3405 Bytes
  Apr 20 18:38:23 varnish Keepalived_vrrp: Using MII-BMSR NIC polling thread...
  Apr 20 18:38:23 varnish Keepalived_vrrp: Registering Kernel netlink reflector
  Apr 20 18:38:23 varnish Keepalived_vrrp: Registering Kernel netlink command channel
  Apr 20 18:38:23 varnish Keepalived_vrrp: Registering gratutious ARP shared channel
  Apr 20 18:38:23 varnish Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.
  Apr 20 18:38:23 varnish Keepalived_vrrp: Configuration is using : 35486 Bytes
  Apr 20 18:38:23 varnish Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
  Apr 20 18:38:25 varnish Keepalived_vrrp: VRRP_Script(chk_http_port) succeeded
  监控 server 1 的日志
  Apr 20 18:37:39 nginx Keepalived_vrrp: Registering Kernel netlink command channel
  Apr 20 18:37:39 nginx Keepalived_vrrp: Registering gratutious ARP shared channel
  Apr 20 18:37:39 nginx Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.
  Apr 20 18:37:39 nginx Keepalived_healthcheckers: Opening file '/etc/keepalived/keepalived.conf'.
  Apr 20 18:37:39 nginx Keepalived_healthcheckers: Configuration is using : 3401 Bytes
  Apr 20 18:37:39 nginx Keepalived_vrrp: Configuration is using : 35476 Bytes
  Apr 20 18:37:40 nginx Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
  Apr 20 18:37:41 nginx Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
  Apr 20 18:37:41 nginx Keepalived_vrrp: Netlink: skipping nl_cmd msg...
  Apr 20 18:37:41 nginx Keepalived_vrrp: VRRP_Script(chk_http_port) succeeded
  8、测试,分别在两个服务器 启动 nginx 和 keepalived
  /usr/local/nginx/sbin/nginx
  /etc/init.d/keepalived start
  7.编写监控nginx监控脚本
  vim /opt/nginx_pid.sh
  #!/bin/bash
  # varsion 0.0.2
  # 根据一网友说这样做不科学,如果nginx服务起来了,但是我把keepalived 杀掉了,我的理由是,如果nginx死掉了,我觉得就很难在起来,再有就是nagios 当然要给你报警了啊。不过这位同学说的有道理,所以就稍加改了一下脚本
  A=`ps -C nginx --no-header |wc -l`                ## 查看是否有 nginx进程 把值赋给变量A
  if [ $A -eq 0 ];then                                         ## 如果没有进程值得为 零
  /usr/local/nginx/sbin/nginx
  sleep 3
  if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
  killall keepalived                        ## 则结束 keepalived 进程
  fi
  fi
  6.在 server 2 服务器 keepalived 配置
  vrrp_script chk_http_port {
  script "/opt/nginx_pid.sh"
  interval 2
  weight 2
  }
  vrrp_instance VI_1 {
  state BACKUP                                ### 设置为 辅机
  interface eth0
  virtual_router_id 51                        ### 与 MASTRE 设置 值一样
  priority 100                                     ### 比 MASTRE权重值 低
  authentication {
  auth_type PASS
  auth_pass eric                    ### 密码 与 MASTRE 一样
  }
  track_script {
  chk_http_port
  }
  virtual_ipaddress {
  192.168.6.7
  }
  }
  5.在server 1服务器编写配置文件
  vrrp_script chk_http_port {
  script "/opt/nginx_pid.sh"         ###监控脚本
  interval 2                             ###监控时间
  weight 2                                ###目前搞不清楚
  }
  vrrp_instance VI_1 {
  state MASTER                            ### 设置为 主
  interface eth0                             ### 监控网卡
  virtual_router_id 51                    ### 这个两台服务器必须一样
  priority 101                                 ### 权重值 MASTRE 一定要高于 BAUCKUP
  authentication {
  auth_type PASS             ### 加密
  auth_pass eric                ### 加密的密码,两台服务器一定要一样,不然会出错
  }
  track_script {
  chk_http_port                     ### 执行监控的服务
  }
  virtual_ipaddress {
  192.168.6.7                            ###    VIP 地址
  }
  }
  4.安装 keepalived

  3.分别在两台机器创建测试文件
  echo "192.168.6.162" > /var/www/index.html
  echo "192.168.6.188" > /var/www/index.html
  2.分别在两台服务器编写配置文件
  vim /usr/local/nginx/conf/nginx.conf
  user    www www;
  worker_processes    1;
  error_log    logs/error.log    notice;
  pid                logs/nginx.pid;
  events {
  worker_connections    1024;
  }
  http {
  include             mime.types;
  default_type    application/octet-stream;
  sendfile                on;
  tcp_nopush         on;
  keepalive_timeout    65;
  gzip    on;
  server {
  listen             80;
  server_name    localhost;
  index     index.html index.htm;
  root        /var/www;
  error_page     500 502 503 504    /50x.html;
  location = /50x.html {
  root     html;
  }
  }
  }
  环境
  Server 1  :  ubuntu-server 8.04.4          192.168.6.162
  
  Server 2  :  userver-server 8.04.4          192.168.6.188
  软件
  Keepalived 1.1.15
  
  nginx-0.8.35
  
  pcre-8.02
  
  1.分别在两台服务器上安装nginx
  tar jxvf pcre-8.02.tar.bz2
  cd pcre-8.02
  ./configure --prefix=/usr --enable-utf8 --enable-pcregrep-libbz2 --enable-pcregrep-libz
  make
  make install
  tar zxvf nginx-0.8.35.tar.gz
  cd nginx-0.8.35
  --prefix=/usr/local/nginx --with-pcre --user=www --group=www --with-file-aio --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-cc-opt=' -O3'
  make
  make install
  .LVS 基础知识汇总
  LVS的算法介绍               http://www.linuxtone.org/viewthread.php?tid=69
  学习LVS的三种转发模式       http://www.linuxtone.org/viewthread.php?tid=77
  LVS中的IP负载均衡技术       http://www.linuxtone.org/viewthread.php?tid=68


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-633867-1-1.html 上篇帖子: nginx status解释 下篇帖子: Docker学习笔记——运行nginx容器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表