Nginx负载均衡以及keepalived高可用实验

news/2025/2/6 14:17:25/
Vip  10.1.122 Keepalived-master  10.1.1.132Keepalied-backup   10.1.1.133Realserver_1      10.1.1.136Realserver_2      10.1.1.137

四台机器上安装nginx,编译安装的话需要另外安装pcre包支持,安装在/usr/local/nginx

Keepalived-master 和backup 安装keepalived 和ipvsadm(lvs安装包)

! Configuration File for keepalivedglobal_defs {#   notification_email {#     len@firewall.loc#     len@firewall.loc#     len@firewall.loc#   }#  notification_email_from Alexandre.Cassen@firewall.loc# smtp_server 192.168.200.1#smtp_connect_timeout 30router_id LVS_DEVEL_1}vrrp_sync_group LVS {group {VI_1}}vrrp_instance VI_1 {state MASTERinterface eth1lvs_sync_daemon_interface eth1virtual_router_id 51priority 101advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.1.1.222}}virtual_server 10.1.1.222 {delay_loop 6lb_algo rrlb_kind DRpersistence_timeout 50protocol TCPreal_server 10.1.1.136 80 {weight 1TCP_CHECK {connect_timeout 4nb_get retry 4delay_before_retry 4connect_port 80}}real_server 10.1.1.137 80 {weight 1TCP_CHECK {connect_timeout 4nb_get_retry 4delay_before_retry 4connect_prot 80}}}##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}Keepalived-backup: 配置文件! Configuration File for keepalivedglobal_defs {# notification_email {#   len@firewall.loc#   len@firewall.loc#   len@firewall.loc# }# notification_email_from Alexandre.Cassen@firewall.loc# smtp_server 192.168.200.1# smtp_connect_timeout 30router_id LVS_DEVEL_2}vrrp_instance VI_1 {state BACKUPinterface eth2virtual_router_id 51priority 99advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.1.1.222}}virtual_server 10.1.1.222 80 {delay_loop 6lb_algo rr##lb_kind NATlb_kind DRpersistence_timeout 50protocol TCPreal_server 10.1.1.136 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_prot 80}}real_server 10.1.1.137 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_prot 80}}}

安装完成后master和backup  /etc/init.d/keepalived start

Ip addr 查看vip地址:

此时master上的ip 10.1.1.222已经生成,backup上此时需等master keepalived停掉后会自动生成vip 10.1.1.222

在停止master keepalived后vip,backup生成10.1.1.222:

通过 ipvsadm来查看HA服务和realserver:

Bakcup上

在realserver的nginx配置文件上配置需要访问的内容,运行如下脚本开启转发功能:

查看realserver的ip,生成lo:0的虚拟网口来转发数据

#!/bin/bashVIP=10.1.1.222source /etc/rc.d/init.d/functionscase "$1" instart)echo "start LVS of real server"ifconfig lo:0 $SYN_VIP netmask 255.255.255.255 broadcast $VIPecho "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announcesysctl -p >/dev/null 2>&1echo "RealServer Start OK";;stop)echo "stop LVS of real server"ifconfig lo:0 downecho "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "RealServer Stoped";;*)echo "USAGE: $0 {start|stop}"exit 1esac

以上配置完成后,进行测试:

在关闭一台nginx 服务后:

关闭一台keepalived服务后,丢一个包就会自动连接


http://www.ppmy.cn/news/1025588.html

相关文章

Java基础篇--Character 类

Character 类是用来操作单个字符的,它将 char 值包装在一个对象中。 实际上,在 Java 中,char 是基本数据类型,而 Character 是 char 的包装类。通过 Character 类,可以使用一系列方法来操作字符。在创建 Character 对…

其他行业跳槽转入计算机领域简单看法

其他行业跳槽转入计算机领域简单看法 本人选择从以下几个方向谈谈自己的想法和观点。 如何规划才能实现转码 自我评估和目标设定:首先,你需要评估自己的技能和兴趣,确定你希望在计算机领域从事的具体职位或领域。这有助于你更好地规划学习路…

Cesium 1.107+ 自定义类支持 readyPromise

由于cesium 1.107 的图元(Primitive) 已经不支持 readyPromise。 但是个人感觉比较好用,于是用了一个插件来实现。 用法: // 定义图元并添加,和之前一样 const boxGreen new BoxPrimitive({color: "#ff0000" }) viewer.scene.primitives.add(boxGreen.primitive)/…

Kubesphere中DevOps流水线无法部署/部署失败

摘要 总算能让devops运行以后,流水线却卡在了deploy这一步。碰到了两个比较大的问题,一个是无法使用k8sp自带的kubeconfig认证去部署;一个是部署好了以后但是没有办法解析镜像名。 版本信息 k8s:v1.21.5 k8sp:v3.3.…

Dynamics 365 字段类型介绍

实体的本质是数据库表,所以每种字段类型都有自己对应的数据库类型。不同的类型也有自己不同的展示界面。 1 字段类型总览 Dynamics365中支持的类型如图,其在C#中对应的类型在括号中 文本类型:单行文本(string)、多行文本(string) 数字类型:整数(int)、浮点数(double)、十…

Arraylist集合

保存数据会经常使用到数组,但数组存在以下几个缺陷: 长度固定;保存的必须为同一类型的元素,(基本数据类型,或引用数据类型);使用数组进行增加元素的步骤比较麻烦; 这个时候就需要用一…

PyTorch 微调终极指南:第 1 部分 — 预训练模型及其配置

一、说明 如今,在训练深度学习模型时,通过在自己的数据上微调预训练模型来迁移学习已成为首选方法。通过微调这些模型,我们可以利用他们的专业知识并使其适应我们的特定任务,从而节省宝贵的时间和计算资源。本文分为四个部分&…

Jmeter 配置环境变量,简明教程专享

通过给 JMeter 配置环境变量,可以快捷的打开 JMeter: 打开终端。执行 jmeter。 配置环境变量的方法如下。 Mac 和 Linux 系统 在 ~/.bashrc 中加如下内容: export JMETER_HOMEJMeter所在目录 export PATH$JAVA_HOME/bin:$PATH:.:$JMETER…