• nginx 搭建高可用集群


    Keepalived+Nginx 高可用集群(主从模式)

    集群架构图

    1、准备两台装有Nginx虚拟机

    2、都需安装Keepalived

    yum install keepalived -y

    查看是否安装成功

    rpm -q -a keepalived

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

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

    修改/etc/keepalived/keepalivec.conf 配置文件

    主服务配置:keepalivec.conf

    1. global_defs {
    2. notification_email {
    3. acassen@firewall.loc
    4. failover@firewall.loc
    5. sysadmin@firewall.loc
    6. }
    7. notification_email_from Alexandre.Cassen@firewall.loc
    8. smtp_server 192.168.19.129
    9. smtp_connect_timeout 30
    10. router_id LVS_DEVEL
    11. }
    12. vrrp_script chk_http_port {
    13. script "/usr/local/src/nginx_check.sh"
    14. interval 2 #(检测脚本执行的间隔)
    15. weight 2
    16. }
    17. vrrp_instance VI_1 {
    18. state MASTER # 备份服务器上将 MASTER 改为 BACKUP
    19. interface ens33 //网卡
    20. virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
    21. priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小
    22. advert_int 1
    23. authentication {
    24. auth_type PASS
    25. auth_pass 1111
    26. }
    27. virtual_ipaddress {
    28. 192.168.19.50 # VRRP H 虚拟地址(非真实物理地址)
    29. }
    30. }

    从服务配置:keepalivec.conf

    1. global_defs {
    2. notification_email {
    3. acassen@firewall.loc
    4. failover@firewall.loc
    5. sysadmin@firewall.loc
    6. }
    7. notification_email_from Alexandre.Cassen@firewall.loc
    8. smtp_server 192.168.19.129
    9. smtp_connect_timeout 30
    10. router_id LVS_DEVEL
    11. }
    12. vrrp_script chk_http_port {
    13. script "/usr/local/src/nginx_check.sh"
    14. interval 2 #(检测脚本执行的间隔)
    15. weight 2
    16. }
    17. vrrp_instance VI_1 {
    18. state BACKUP # 备份服务器上将 MASTER 改为 BACKUP
    19. interface ens33 //网卡
    20. virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
    21. priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
    22. advert_int 1
    23. authentication {
    24. auth_type PASS
    25. auth_pass 1111
    26. }
    27. virtual_ipaddress {
    28. 192.168.19.50 # VRRP H 虚拟地址(非真实物理地址)
    29. }
    30. }

    在/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
    启动 keepalived:
    systemctl start keepalived.service

    检验keepalived是否启动成功

    ps -ef | grep keepalived
    最终测试
    在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50访问
    在master 输入 ip a 可以查看到

     停止主服务器仍可以访问从服务器

    1. systemctl stop keepalived.service
    2. docker stop mynginx

    至此实现nginx高可用集群。

  • 相关阅读:
    Java SE 7 Update 17的安装配置及相关问题解决
    传输层 拥塞控制-慢开始和拥塞避免 快重传 快恢复
    揭秘传统数据库转型云原生的迅猛趋势
    Dubbo之参数配置(一)
    一文详解处理器缓存(缓存一致性、读写屏障、指令预取、false sharing)
    【数智化人物展】白鲸开源CEO郭炜:大模型助力企业大数据治理“数智化”升级...
    基于日特征气象因素的支持向量机预测电力负荷(Matlab代码实现)
    JSON decoding error: Invalid UTF-8 start byte 0xb6
    ArcGIS中将测绘数据投影坐标(平面坐标)转地理坐标(球面经纬度坐标)
    利用 GitHub Action 对项目进行自动部署
  • 原文地址:https://blog.csdn.net/qq_29385297/article/details/127828384