• keepalived安装配置(服务器主备、负载均衡)


    系统拓扑

    安装keepalived

    主备服务器上都需要安装

    在线安装

    yum install  -y  keepalived 

    离线安装

    主服务器脚本

    1. # 设置虚拟机ip、网卡命令、hostname(后期自动获取)
    2. master_ipaddress=192.168.11.54
    3. backup_ipaddress=192.168.11.53
    4. virtual_ipaddress=192.168.11.56
    5. hostname=localhost.localdomain
    6. interface=ens33
    7. #关闭防火墙
    8. systemctl stop firewalld.service
    9. systemctl disable firewalld.service
    10. setenforce 0
    11. #永久关闭
    12. sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
    13. #创建文件夹
    14. mkdir /home/tuners -p
    15. # 拷贝到tuners路径下
    16. \cp -r ./*keepalived* /home/tuners
    17. echo "拷贝完成"
    18. # 离线安装
    19. cd /home/tuners/keepalived
    20. rpm -Uvh --force --nodeps *.rpm
    21. # 生成主服务器配置文件
    22. cat > /etc/keepalived/keepalived.conf << EOF
    23. global_defs {
    24. router_id $hostname # 访问到主机,本机的hostname,需要修改
    25. }
    26. vrrp_script chk_http_port {
    27. script "/usr/local/src/nginx_check.sh" # 检测脚本位置
    28. interval 2 #(检测脚本执行的间隔)
    29. weight 2 # 权重
    30. }
    31. vrrp_instance VI_1 {
    32. state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改
    33. interface $interface # 网卡名字,使用ifconfig查看,需要修改
    34. virtual_router_id 51 # 主、备机的 virtual_router_id 不能相同
    35. priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主10090
    36. advert_int 1 # 每隔1秒发送心跳
    37. authentication {
    38. auth_type PASS
    39. auth_pass 1111
    40. }
    41. unicast_src_ip $master_ipaddress ##自己ip
    42. unicast_peer { #单模式
    43. $backup_ipaddress #另一个ip
    44. }
    45. virtual_ipaddress {
    46. $virtual_ipaddress #// VRRP H 虚拟地址,也可以绑定多个虚拟ip,需要修改
    47. }
    48. }
    49. EOF
    50. # 生成备服务器配置文件
    51. # cat > /etc/keepalived/keepalived.conf << EOF
    52. # global_defs {
    53. # router_id localhost.localdomain # 访问到主机,本机的hostname,需要修改
    54. # }
    55. # vrrp_script chk_http_port {
    56. # script "/usr/local/src/nginx_check.sh" # 检测脚本位置
    57. # interval 2 #(检测脚本执行的间隔)
    58. # weight 2 # 权重
    59. # }
    60. # vrrp_instance VI_1 {
    61. # state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改
    62. # interface ens33 # 网卡名字,使用ifconfig查看,需要修改
    63. # virtual_router_id 59 # 主、备机的 virtual_router_id 不能相同
    64. # priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主10090
    65. # advert_int 1 # 每隔1秒发送心跳
    66. # authentication {
    67. # auth_type PASS
    68. # auth_pass 1111
    69. # }
    70. # virtual_ipaddress {
    71. # $virtual_ipaddress #// VRRP H 虚拟地址,也可以绑定多个虚拟ip,需要修改
    72. # }
    73. # }
    74. # EOF
    75. # 生成监测脚本
    76. # cat > /usr/local/src/nginx_check.sh << EOF
    77. # #!/bin/bash
    78. # A=\`ps -C nginx – no-header |wc -l\`
    79. # if [ \$A -eq 0 ];then
    80. # /usr/sbin/nginx #nginx启动路径
    81. # sleep 2
    82. # if [ \`ps -C nginx --no-header |wc -l\` -eq 0 ];then
    83. # killall keepalived
    84. # fi
    85. # fi
    86. # EOF
    87. cat > /usr/local/src/nginx_check.sh << EOF
    88. rm -rf ./tmp.log
    89. systemctl status nginx.service > ./tmp.log
    90. if cat tmp.log |grep "failed";then
    91. systemctl start nginx.service
    92. sleep 2
    93. rm -rf ./tmp.log
    94. systemctl status nginx.service > ./tmp.log
    95. if cat tmp.log |grep "failed";then
    96. systemctl start keepalived.service
    97. fi
    98. fi
    99. EOF
    100. # 启动keepalived
    101. systemctl enable keepalived.service
    102. systemctl restart keepalived.service
    103. # 查看keepalived
    104. systemctl status keepalived.service

    备服务器脚本

    1. # 设置虚拟机ip、网卡命令、hostname(后期自动获取)
    2. master_ipaddress=192.168.11.54
    3. backup_ipaddress=192.168.11.53
    4. virtual_ipaddress=192.168.11.56
    5. hostname=localhost.localdomain
    6. interface=ens33
    7. #关闭防火墙
    8. systemctl stop firewalld.service
    9. systemctl disable firewalld.service
    10. setenforce 0
    11. #永久关闭
    12. sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
    13. #创建文件夹
    14. mkdir /home/tuners -p
    15. # 拷贝到tuners路径下
    16. \cp -r ./*keepalived* /home/tuners
    17. echo "拷贝完成"
    18. # 离线安装
    19. cd /home/tuners/keepalived
    20. rpm -Uvh --force --nodeps *.rpm
    21. # 生成主服务器配置文件
    22. # cat > /etc/keepalived/keepalived.conf << EOF
    23. # global_defs {
    24. # router_id localhost.localdomain # 访问到主机,本机的hostname,需要修改
    25. # }
    26. # vrrp_script chk_http_port {
    27. # script "/usr/local/src/nginx_check.sh" # 检测脚本位置
    28. # interval 2 #(检测脚本执行的间隔)
    29. # weight 2 # 权重
    30. # }
    31. # vrrp_instance VI_1 {
    32. # state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改
    33. # interface ens33 # 网卡名字,使用ifconfig查看,需要修改
    34. # virtual_router_id 51 # 主、备机的 virtual_router_id 不能相同
    35. # priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主10090
    36. # advert_int 1 # 每隔1秒发送心跳
    37. # authentication {
    38. # auth_type PASS
    39. # auth_pass 1111
    40. # }
    41. # virtual_ipaddress {
    42. # $virtual_ipaddress #// VRRP H 虚拟地址,也可以绑定多个虚拟ip,需要修改
    43. # }
    44. # }
    45. # EOF
    46. # 生成备服务器配置文件
    47. cat > /etc/keepalived/keepalived.conf << EOF
    48. global_defs {
    49. router_id $hostname # 访问到主机,本机的hostname,需要修改
    50. }
    51. vrrp_script chk_http_port {
    52. script "/usr/local/src/nginx_check.sh" # 检测脚本位置
    53. interval 2 #(检测脚本执行的间隔)
    54. weight 2 # 权重
    55. }
    56. EOF
    57. vrrp_instance VI_1 {
    58. state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改
    59. interface $interface # 网卡名字,使用ifconfig查看,需要修改
    60. virtual_router_id 59 # 主、备机的 virtual_router_id 不能相同
    61. priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主10090
    62. advert_int 1 # 每隔1秒发送心跳
    63. authentication {
    64. auth_type PASS
    65. auth_pass 1111
    66. }
    67. unicast_src_ip $backup_ipaddress ##自己ip
    68. unicast_peer { #单模式
    69. $master_ipaddress #另一个ip
    70. }
    71. virtual_ipaddress {
    72. $virtual_ipaddress #// VRRP H 虚拟地址,也可以绑定多个虚拟ip,需要修改
    73. }
    74. }
    75. EOF
    76. # 生成监测脚本
    77. # cat > /usr/local/src/nginx_check.sh << EOF
    78. # #!/bin/bash
    79. # A=\`ps -C nginx – no-header |wc -l\`
    80. # if [ \$A -eq 0 ];then
    81. # /usr/sbin/nginx #nginx启动路径
    82. # sleep 2
    83. # if [ \`ps -C nginx --no-header |wc -l\` -eq 0 ];then
    84. # killall keepalived
    85. # fi
    86. # fi
    87. # EOF
    88. cat > /usr/local/src/nginx_check.sh << EOF
    89. rm -rf ./tmp.log
    90. systemctl status nginx.service > ./tmp.log
    91. if cat tmp.log |grep "failed";then
    92. systemctl start nginx.service
    93. sleep 2
    94. rm -rf ./tmp.log
    95. systemctl status nginx.service > ./tmp.log
    96. if cat tmp.log |grep "failed";then
    97. systemctl start keepalived.service
    98. fi
    99. fi
    100. EOF
    101. # 启动keepalived
    102. systemctl enable keepalived.service
    103. systemctl restart keepalived.service
    104. # 查看keepalived
    105. systemctl status keepalived.service

    服务器准备

    虚拟机ip:192.168.11.56

    主服务器:192.168.11.53

    备服务器:192.168.11.54

    配置文件修改

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

    /etc/keepalived

    服务器配置文件

    1. global_defs {
    2. router_id localhost.localdomain # 访问到主机,本机的hostname,需要修改
    3. }
    4. vrrp_script chk_http_port {
    5. script "/usr/local/src/nginx_check.sh" # 检测脚本位置
    6. interval 2 #(检测脚本执行的间隔)
    7. weight 2 # 权重
    8. }
    9. vrrp_instance VI_1 {
    10. state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改
    11. interface ens33 # 网卡名字,使用ifconfig查看,需要修改
    12. virtual_router_id 59 # 主、备机的 virtual_router_id 组播模式不能相同,单播模式必须相同
    13. priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主10090
    14. advert_int 1 # 每隔1秒发送心跳
    15. authentication {
    16. auth_type PASS
    17. auth_pass 1111
    18. }
    19. unicast_src_ip 192.168.11.53 ##自己ip
    20. unicast_peer { #单模式
    21. 192.168.11.54 #另一个ip
    22. }
    23. virtual_ipaddress {
    24. 192.168.11.56 #// VRRP H 虚拟地址,也可以绑定多个虚拟ip,需要修改
    25. }
    26. }

     需要修改的内容如下

    hostname 需要修改

    hostname获取方式 :在命令行中输入hostname

     网卡命令需要修改:interface这个字段的值

    查看网卡信息:输入下面命令

    ip  a

     下图中ens33就是网卡名字

     

    虚拟ip需要修改:virtual_ipaddress 这个字段

    备服务器配置文件

    1. global_defs {
    2. router_id localhost.localdomain # 访问到主机,本机的hostname,需要修改
    3. }
    4. vrrp_script chk_http_port {
    5. script "/usr/local/src/nginx_check.sh" # 检测脚本位置
    6. interval 2 #(检测脚本执行的间隔)
    7. weight 2 # 权重
    8. }
    9. vrrp_instance VI_1 {
    10. state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改
    11. interface ens33 # 网卡名字,使用ifconfig查看,需要修改
    12. virtual_router_id 59 # 主、备机的 virtual_router_id 组播模式不能相同,单播模式必须相同
    13. priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主10090
    14. advert_int 1 # 每隔1秒发送心跳
    15. authentication {
    16. auth_type PASS
    17. auth_pass 1111
    18. }
    19. unicast_src_ip 192.168.11.54 ##自己ip
    20. unicast_peer { #单模式
    21. 192.168.11.53 #另一个ip
    22. }
    23. virtual_ipaddress {
    24. 192.168.11.56 #// VRRP H 虚拟地址,也可以绑定多个虚拟ip,需要修改
    25. }
    26. }

     需要修改的内容跟主服务器脚本一样

    监测脚本

    主备切换的测试的两种方案

    方案1:关服务器

    方案2: 停nginx应用

     监测脚本流程

     

    监测脚本路径:/usr/local/src/nginx_check.sh

    功能:检测nginx是否启动,如果停了就重启,如果还是起不来,就停止keepalived。

    主备服务器上都需要配置

    1. #!/bin/bash
    2. A=`ps -C nginx – no-header |wc -l`
    3. if [ $A -eq 0 ];then
    4. /usr/sbin/nginx #nginx启动路径
    5. sleep 2
    6. if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
    7. killall keepalived
    8. fi
    9. fi

    启动keepalived

    systemctl start keepalived.service

    重启keepalived

    systemctl restart keepalived.service

     查询keepalived状态

    systemctl status keepalived.service

    nginx部署

    nginx web页面修改

    nginx配置文件路径:/etc/nginx/nginx.conf,该配置文件引用了/etc/nginx/conf.d/default.conf

    打开/etc/nginx/conf.d/default.conf配置文件可以看到html页面的路径

    /usr/share/nginx/html 为路径
     index.html为页面

    进入到对应路径下

    打开页面文件,修改信息,作为访问的服务器的标记,比如我服务器是54,我就在页面中加上54

    具体访问呈现效果如下

  • 相关阅读:
    [Machine Learning][Part 8]神经网络的学习训练过程
    Golang版本处理Skywalking Trace上报数据
    ViT论文详解
    React常见面试题
    同步云盘:理解云端数据的实时同步技术
    Python趣味入门9:函数是你走过的套路,详解函数、调用、参数及返回值
    每日三题 6.29
    百度10年架构师分享的(Java TCP/IP Socket编程开发经验)看完受益匪浅!
    Paypal提现到万里汇再提现到支付宝的全过程
    旅游信息推荐系统带文档springboot+vue
  • 原文地址:https://blog.csdn.net/zengliguang/article/details/134427308