• Nginx的高可用集群


    1、什么是 nginx高可用

    只有一台nginx服务器时,如果nginx服务器宕机了,那么请求就无法访问。

    要实现高可用,那就可以部署多台nginx服务器,下面以两台nginx服务器为例,示意图如下:

    要配置nginx集群,至少需要满足一下条件: 

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

    2、配置高可用的Nginx集群

    (1)需要两台服务器 192.168.200.130和192.168.200.131


    (2)在两台服务器安装nginx

    (3)在两台服务器安装keepalived

     yum install keepalived -y

    安装过程遇到了报错,解决方法参考:

    nginx+keepalived配置踩过的坑_steven在学习的博客-CSDN博客

    安装完成后查看版本信息:

     安装之后,在etc里面生成目录 keepalived,有文件 keepalived.conf

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

    主服务器keepalived.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.200.130
    10. smtp_connect_timeout 30
    11. router_id LVS_DEVEL
    12. vrrp_skip_check_adv_addr
    13. vrrp_strict
    14. vrrp_garp_interval 0
    15. vrrp_gna_interval 0
    16. }
    17. vrrp_script chk_http_port {
    18. script "/usr/local/src/nginx_check.sh"
    19. interval 2
    20. weight 2
    21. }
    22. vrrp_instance VI_1 {
    23. state MAXTER
    24. interface ens33
    25. virtual_router_id 51
    26. priority 100
    27. advert_int 1
    28. authentication {
    29. auth_type PASS
    30. auth_pass 1111
    31. }
    32. virtual_ipaddress {
    33. 192.168.200.100
    34. }
    35. }

    从服务器keepalived.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.200.131
    10. smtp_connect_timeout 30
    11. router_id LVS_DEVEL
    12. vrrp_skip_check_adv_addr
    13. vrrp_strict
    14. vrrp_garp_interval 0
    15. vrrp_gna_interval 0
    16. }
    17. vrrp_script chk_http_port {
    18. script "/usr/local/src/nginx_check.sh"
    19. interval 2
    20. weight 2
    21. }
    22. vrrp_instance VI_1 {
    23. state BACKUP
    24. interface ens33
    25. virtual_router_id 51
    26. priority 90
    27. advert_int 1
    28. authentication {
    29. auth_type PASS
    30. auth_pass 1111
    31. }
    32. virtual_ipaddress {
    33. 192.168.200.100
    34. }
    35. }

    在主从服务器的/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

    把两台服务器上 nginx和keepalived启动
    启动 nginx:./nginx
    启动 keepalived:systemctl start keepalived.service

    查看keepalived进程

    (5)最终测试

    在浏览器地址栏输入虚拟ip地址192.168.200.100

    能访问到nginx主页,说明配置是成功。

    用ip a命令也可以看到,两台服务器都已经绑定了虚拟ip

    把主服务器(192.168.200.130)nginx和keepalived停止,再输入192.168.200.100(虚拟ip)

     再次查看进程

    进程已经不存在了

    这时候再次访问虚拟ip

    这时候访问的就是从服务器(192.168.200.131) 

  • 相关阅读:
    DHTMLX To Do List 1.0 亮点功能:高级任务分配、内联编辑、便捷的键盘导航
    protobufjs实现protobuf序列化与反序列化
    【Unity基础】2.网格材质贴图与资源打包
    web前端期末大作业:JavaScript大作业——福五鼠动漫网页制作(6页)带轮播图效果 学生个人单页面网页作业 学生网页设计成品 静态HTML网页单页制作
    设计模式桥接模式
    【Leetcode】单链表oj(下),难度提升,快来做做.
    Swoole 进程模型分析
    如何将Word转成PDF?试一下这个转换方法
    STC15单片机-RS-485通信
    PEG/蛋白/抗体功能/修饰/偶联化铋纳米球 PEG/Protein/antibody-Bi nanosphere 的产品介绍
  • 原文地址:https://blog.csdn.net/liangmengbk/article/details/128177421