linux搭建主备负载均衡

2023-11-15

1:原理图

底层原理

 

 

 

 

2:负载集合的功能:

1)客户端传过来的请求,在负载均衡那里,根据算法,把用户的请求给指定的服务器,

2)如果负载均衡主机宕机了,备机马上接手,如果主机恢复了,备机马上退后

3)如果某个服务器挂了,该服务器马上被踢出去,负载均衡转发请求不发该服务器,如果服务器恢复了,马上添加进来,添加到负载均衡的服务器群中。

3:负载均衡搭建

3.1准备4台虚拟机,2台作为负载均衡主从机,2台作为httpd服务器

3.2获取2台服务器的ip

[root@fei etc]# ifconfig
eth1      
          inet addr:192.168.163.130  

[root@fei etc]# ifconfig
eth1       
          inet addr:192.168.163.131   
 

3.3分别为2台服务器配置vip

 

[root@fei ~]# cd /etc/init.d/

[root@fei ~]#touch realserver

[root@fei ~]#vim realserver

SNS_VIP=192.168.163.150
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0

 

为realserver文件配置权限

chmod 750 realserver

//启动

 

[root@fei init.d]# service realserver  start
RealServer Start OK
//效果

[root@fei ~]# ipconfig

lo:0      Link encap:Local Loopback  
          inet addr:192.168.163.150  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:65536  Metric:1

//2台服务器配置默认访问页面

[root@fei html]# vim /var/www/html/index.html

130 130 130

[root@fei html]# vim /var/www/html/index.html

130 130 131

//分别开启2台httpdf服务器

[root@fei html]# service httpd start
正在启动 httpd:

效果如下

 

以上参数说明

SNS_VIP=192.168.163.150          #定义VIP变量

. /etc/rc.d/init.d/functions #导脚本库

case "$1" in #case语句$1传递给该shell脚本的第一个参数

start)

ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP #设置Lo:0 VIP  netmask  及广播

/sbin/route add -host $SNS_VIP dev lo:0   ##route del增加本地路由

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p >/dev/null 2>&1 # -p <file>   (default /etc/sysctl.conf)将标准信息输入设备空文件

echo "RealServer Start OK"

;;

stop)

ifconfig lo:0 down

route del $SNS_VIP >/dev/null 2>&1      #route del删除本地路由

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

echo "RealServer Stoped"

;;

*)

echo "Usage: $0 {start|stop}"  #$0 是脚本本身的名字

exit 1 #表示进程正常退出

esac #case结束

exit 0 #表示进程非正常退出

 

 

 

 

 

1):安装   keepalived

yum –y install   keepalived

2):配置 keepalived 

 >  /etc/keepalived/keepalived.conf

vim /etc/keepalived/keepalived.conf

 

global_defs {
#   notification_email {             
#       admin@toxingwang.com
#   }
#   notification_email_from master@toxingwang.com
#   smtp_server smtp.exmail.qq.com
#   smtp_connect_timeout 30
        router_id LVS_DEVEL
}
vrrp_instance VI_1 {
        state MASTER
        interface eth1
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
                auth_type PASS
                auth_pass 1111
        }
        virtual_ipaddress {
                192.168.163.150
        }
}
virtual_server 192.168.163.150 80 {
        delay_loop 6
        lb_algo wrr
        lb_kind DR
        nat_mask 255.255.255.0
        persistence_timeout 0
        protocol TCP
        real_server 192.168.163.130 80 {
                weight 3
                TCP_CHECK {
                        connect_timeout 10
                        nb_get_retry 3
                        delay_before_retry 3
                        connect_port 80
                }
        }

        real_server 192.168.163.131 80 {
                weight 3
                TCP_CHECK {
                        connect_timeout 10
                        nb_get_retry 3
                        delay_before_retry 3
                        connect_port 80
                }
        }
}

 

启动并查看日志

[root@fei keepalived]# service keepalived start
正在启动 keepalived:                                      [确定]
[root@fei keepalived]# tail -f /var/log/messages

ar 26 05:37:06 fei Keepalived_vrrp[37022]: VRRP_Instance(VI_1) Transition to MASTER STATE
Mar 26 05:37:06 fei Keepalived_vrrp[37022]: VRRP_Instance(VI_1) Received lower prio advert, forcing new election
Mar 26 05:37:07 fei Keepalived_vrrp[37022]: VRRP_Instance(VI_1) Entering MASTER STATE

以上就把主机的负载均衡配置好了。

3.5 重复3.4,在另外一台虚拟机上配置负载均衡备机

配置说明

 

global_defs {                        ##全局配置部分

#   notification_email {             ##下面几行均为全局通知配置,可以实现出现问题后报警

#       admin@toxingwang.com

#   }

#   notification_email_from 2637282556@qq.com

#  2637282556.qq.com

#   smtp_connect_timeout 30

router_id LVS_DEVEL             ##设置lvs的id,在一个网络内应该是唯一的

}

vrrp_instance VI_1 {            ##设置vrrp组,唯一且同一LVS服务器组要相同

state MASTER             ##备份LVS服务器设置为BACKUP

interface eth0  # #设置对外服务的接口,如果虚拟机是复制的,该接口可能是eth1            

virtual_router_id 51        ##设置虚拟路由标识

priority 100                   #设置优先级,数值越大,优先级越高,backup设置为99,这样就能实现当master宕机后自动将backup变为master,而当原master恢复正常时,则现在的master再次变为backup。

advert_int 1            ##设置同步时间间隔

authentication {         ##设置验证类型和密码,master和buckup一定要设置一样

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {          ##设置VIP,可以多个,每个占一行

192.168.163.150

}

}

virtual_server 192.168.163.150 80 {/

delay_loop 6            ##健康检查时间间隔,单位s,查看httpd服务器还在不

lb_algo wrr             ##负载均衡调度算法设置为加权轮叫

lb_kind DR                              ##负载均衡转发规则

nat_mask 255.255.255.0   ##网络掩码,DR模式要保障真实服务器和lvs在同一网段

persistence_timeout 50    ##会话保持时间,单位s,就是与httpd服务器保持的时间,在该时间段的,所有请求都跳转到该hhtpd的服务器,(session计算规则,最后一次服务器请求的时间作为开始时间)

protocol TCP                           ##协议

real_server 192.168.163.130 80 {      ##真实服务器配置,80表示端口

weight 3                             ##权重

TCP_CHECK {                       ##服务器检测方式设置keepalived的健康检查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK

connect_timeout 0    ##连接超时时间

nb_get_retry 3      ##失败重试次数

delay_before_retry 3 ##失败重试的间隔时间

connect_port 80      ##连接的后端端口

}

}

 

real_server 192.168.163.131 80 {

weight 3

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux搭建主备负载均衡 的相关文章

随机推荐

  • Stable Diffusion服务环境搭建(远程服务版)

    Stable Diffusion服务环境搭建 远程服务版 Stable Diffusion是什么 Stable diffusion是一个基于Latent Diffusion Models 潜在扩散模型 LDMs 的文图生成 text to
  • 微信小程序:图标的使用(icon)

    摘要 图标主要是用来辅助ui界面的 常用的是 和 像蓝牙和wifi是否连上的标志 让人直观明了 icon的参数 组件icon的参数主要有三个 下图所示 1 type icon的类型 官方给出了9个 分别为success success no
  • 51单片机AD转换代码原理图参考

    include reg52 h define uchar unsigned char define uint unsigned int sbit ADC RD P3 3 sbit ADC WR P3 4 sbit ADC INT P3 5
  • 设计模式——简单工厂模式

    静态工厂方法模式 通过专门定义一个类来负责创建其他类的实例 被创建的实例通常都具有共同的父类 模式中包含的角色及其职责 1 工厂 Creator 角色 简单工厂模式的核心 它负责实现创建所有实例的内部逻辑 工厂类可以被外界直接调用 创建所需
  • DRF学习之token验证(十)

    1 获取某分类下的商品 自定义过滤分类 增加过滤条件top category filter 用于过滤某个分类下的所有商品 class GoodsFilter django filters rest framework FilterSet 商
  • JVM垃圾回收机制(收集器、收集算法、卡表)

    目录 JVM垃圾回收机制 HotSpot垃圾分代回收算法 HotSpot经典垃圾收集器 CMS G1 跨代引用 卡表 写屏障 各种收集器对比 在java开发中 我们不需要过度的关注对象的回收和释放 因为JVM的垃圾回收机制可以帮助我们自动对
  • 全网最详细中英文ChatGPT-GPT-4示例文档-场景问题智能生成从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

    从0到1快速入门场景问题智能生成应用场景 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node js接口请求示例
  • C/C++学习——自定义数据类型——链表

    链表的概念 一 链表的概念 1 链表是一种存储空间能动态进行增长或缩小的数据结构 2 链表主要用于 1 建立不定长度的数组 2 可以在不重新安排整个存储结构的情况下 方便且迅速地插入和删除数据元素 3 链表广泛应用于数据管理中 二 结点 s
  • 延时任务的四种实现方式

    什么是延迟任务 顾明思议 我们把需要延迟执行的任务叫做延迟任务 延迟任务的使用场景有以下这些 红包 24 小时未被查收 需要延迟执退还业务 每个月账单日 需要给用户发送当月的对账单 订单下单之后 30 分钟后 用户如果没有付钱 系统需要自动
  • D0006-进制,位运算,原反补码

    十进制转其他进制 公式 除基取余 直到商为0 把余数反转拼接 十进制10转换二进制 商 余数 10 2 5 0 5 2 2 1 2 2 1 0 1 2 0 1 把余数反转拼接 1010 原码反码和补码 原码 一个二进制数据 最高位符号位 0
  • 数据存储---整形数据在内存中的存储

    我们每一次写代码的时候 都会创建变量 那么所创建的整形变量是如何在内存中存储的呢 目录 1 数据类型介绍 2 整形数据在内存中的存储形式 3 大小端字节序的介绍 1 数据类型介绍 本文重点介绍内置类型中的整形家族 1 内置类型 C语言本身具
  • JDK安装配置(Windows10)

    环境 windows10 官方链接 https www oracle com technetwork java javase downloads jdk8 downloads 2133151 html 点击Accept License Ag
  • 由于找不到msvcp120.dll无法继续执行代码怎么办?

    msvcp120 dll是微软软件包的一部分 它是一个库文件 可用于支持软件运行时 msvcp120 dll的作用是提供计算机程序所需的标准库 msvcp120 dll还负责管理堆内存 线程和异常处理函数等 在使用windows编写的应用程
  • indows npm ERR! gyp ERR! find Python Python is not set from command line or npm configuration npm ER

    问题描述 windows npm ERR gyp ERR find Python Python is not set from command line or npm configuration npm ERR gyp ERR find P
  • SSL工作原理

    转自 https www wosign com Basic howsslwork htm SSL 是一个安全协议 它提供使用 TCP IP 的通信应用程序间的隐私与完整性 因特网的 超文本传输协议 HTTP 使用 SSL 来实现安全的通信
  • 一个函数名后面加const表示什么意思

    const用在成员函数后 主要是针对类的const 对象 如 class Text public void printconst void const cout lt lt hello lt
  • java匿名对象的使用

    package object oriented04 import object oriented03 Person public class InstanceTest public static void main String args
  • 力扣OJ(1601-2000)

    目录 1602 找到二叉树中最近的右侧节点 1611 使整数变为 0 的最少操作次数 1612 检查两棵二叉表达式树是否等价 1631 最小体力消耗路径 1632 矩阵转换后的秩 1634 求两个多项式链表的和 1644 二叉树的最近公共祖
  • 【KnowledgeBase】目标追踪模型MOTR论文简要理解

    系列文章目录 文章目录 系列文章目录 前言 一 主要思想 二 整体架构 二 细节 1 Detect Query和Track Query 2 Tracklet Aware Label Assignment TALA 3 QIM模块 总结 前言
  • linux搭建主备负载均衡

    1 原理图 底层原理 2 负载集合的功能 1 客户端传过来的请求 在负载均衡那里 根据算法 把用户的请求给指定的服务器 2 如果负载均衡主机宕机了 备机马上接手 如果主机恢复了 备机马上退后 3 如果某个服务器挂了 该服务器马上被踢出去 负