经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 职业生涯 » 查看文章
keepalived安装及组合nginx配置负载实现高可用
来源:cnblogs  作者:莫忘归  时间:2021/4/19 8:47:19  对本文有异议

1. Keepalived安装配置

1.1 官网下载tar包

  1. https://www.keepalived.org/

1.2 上传到指定目录安装

  1. ./configure --prefix=/usr/local/keepalived --sysconf=/etc
  2. *** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
  3. 如果出现上述提示,则执行下面命令安装libnl
  4. yum install -y libnl
  5. make && make install

1.3 配置文件

  1. cd /etc/keepalived
  2. cp keepalived.conf keepalived.conf.bak
  3. vim keepalived.conf

配置文件内容如下:

  1. ! Configuration File for keepalived
  2. #全局配置
  3. global_defs {
  4. # 负载均衡标识,在局域网内应该是唯一的。一般为主机名。
  5. router_id 主机名称
  6. }
  7. vrrp_script chk_http_port {
  8. # 检测心跳执行的脚本
  9. script "/usr/local/src/nginx_check.sh"
  10. # 检测脚本执行间隔,单位:秒
  11. interval 4
  12. weight 2
  13. }
  14. #定义实例
  15. vrrp_instance VI_1 {
  16. # 指定keepalived的角色,MASTER为主,BACKUP为备
  17. state MASTER
  18. # 当前进行vrrp通讯的网络接口卡(当前centos的网卡)
  19. interface ens33
  20. # 指定VRRP实例ID(虚拟路由编号),范围是0-255,主从要一致
  21. virtual_router_id 202
  22. # 优先级,数值越大,获取处理请求的优先级越高, 优先级高的将成为MASTER。
  23. priority 100
  24. # 指定发送VRRP通告的间隔,默认为1s(vrrp组播周期秒数)
  25. advert_int 1
  26. # 设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
  27. authentication {
  28. # 指定认证方式。PASS简单密码认证(推荐),AH:IPSEC认证(不推荐)。
  29. auth_type PASS
  30. # 指定认证所使用的密码。最多8位。
  31. auth_pass 2020
  32. }
  33. # 调用检测脚本
  34. track_script {
  35. chk_http_port
  36. }
  37. # 定义虚拟ip(VIP),可多设,每行一个
  38. virtual_ipaddress {
  39. 192.168.199.143
  40. }
  41. }

1.4 配置nginx检测脚本文件

  1. cd /usr/local/src
  2. vim 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-1.18.0/sbin/nginx
  5. sleep 4
  6. if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
  7. killall keepalived
  8. fi
  9. fi

1.5 keepalived 启动/重启/停止/查看状态

  1. systemctl start/restart/stop/status keepalived

注:启动keepalived会执行nginx检测脚本,此时如果nginx未启动则会同时启动nginx。

1.6 查看日志

  1. tail -f /var/log/messages

1.7 浏览器访问虚拟IP地址

  1. 192.168.199.143

2. nginx负载均衡配置

  1. worker_processes 1;
  2. events {
  3. worker_connections 1024;
  4. }
  5. http {
  6. include mime.types;
  7. default_type application/octet-stream;
  8. sendfile on;
  9. keepalive_timeout 65;
  10. upstream minio-server {
  11. # weight:默认为1。weight越大,负载的权重就越大。
  12. # backup:其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
  13. # max_fails:允许请求失败的次数默认为1,当超过最大次数时,返回 proxy_next_upstream 模块定义的错误。
  14. # fail_timeout:Nginx基于连接探测,如果发现后端异常,在单位周期为fail_timeout设置的时间中达到max_fails次数,这个周期次数内,如果后端同一个节点不可用,那么把节点标记为不可用,并等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功。
  15. server 192.168.199.140:9000 weight=2 max_fails=3 fail_timeout=10s;
  16. server 192.168.199.141:9000 max_fails=3 fail_timeout=30s;
  17. }
  18. server {
  19. listen 80;
  20. server_name 192.168.199.143;
  21. charset utf-8;
  22. location / {
  23. proxy_set_header Host $http_host;
  24. proxy_set_header X-Forwarded-For $remote_addr;
  25. # 传输文件缓存大小及单次请求大小
  26. client_body_buffer_size 10M;
  27. client_max_body_size 1G;
  28. # 宕机检测,如果设置时间内无响应,则直接切换到其它服务
  29. proxy_connect_timeout 4;
  30. proxy_send_timeout 4;
  31. proxy_read_timeout 4;
  32. proxy_pass http://minio-server;
  33. }
  34. error_page 500 502 503 504 /50x.html;
  35. location = /50x.html {
  36. root html;
  37. }
  38. }
  39. }

此配置下 nginx + keepalived 在多台服务器上搭建,可以实现高可用负载均衡。

原文链接:http://www.cnblogs.com/lishen2021/p/14663936.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号