本文参考:http://blog.csdn.net/yinwenjie/article/details/47211551

简单粗暴写一下,做备忘,刚刚搭好没做优化呢,后期补充

一、机器准备

LVS-Master  192.168.100.2    主LVS
LVS-BACKUP 192.168.100.3    备LVS
WEB1    192.168.100.11    nginx1
WEB2    192.168.100.12    nginx2
WEB3    192.168.100.13    nginx3
vip     192.168.100.1     虚拟IP

  

主机名统一更新,可以自定义名称,我这里统一命名,LVS-Master、LVS-BACKUP、WEB1、WEB2、WEB3

二、安装配置Keepalive

yum install -y zlib zlib-devel gcc gcc-c++ openssl openssl-devel openssh
yum install keepalive* -y //如果yum里面没有请编译安装一下
cp /etc/keepalived/keepalived.conf /etc/keepalived/bck_keepalived.conf //先做个备份,防止操作错误

vi keepalived.conf

! Configuration File for keepalived

global_defs {
#notification_email {
# acassen@firewall.loc
# failover@firewall.loc
# sysadmin@firewall.loc
#}
#notification_email_from Alexandre.Cassen@firewall.loc
#smtp_server 192.168.200.1
#smtp_connect_timeout 30
router_id LVS_DEVEL
} vrrp_instance VI_1 {
#141节点设置为MASTER,142或者还有其他的节点设置为BACKUP
#还记得我们前面文章讲到的无抢占设置吗?这里也可以用哦。
state BACKUP
#网络适配器名称
interface eth0
virtual_router_id 51
#所有的SLAVE节点的优先级都要比这个设置值低
priority 120
advert_int 1
#真实ip,主LVS和备份LVS要改成相应的lvs节点真实ip
mcast_src_ip=192.168.100.3
authentication {
auth_type PASS
auth_pass 1111
}
#虚拟/浮动IP
virtual_ipaddress {
192.168.100.1
}
} virtual_server 192.168.100.1 80 {
#健康时间检查,单位秒
delay_loop 6
#负载均衡调度算法wlc|rr,和您将使用的LVS的调度算法保持原则一致
lb_algo rr
#负载均衡转发规则 DR NAT TUN。和您将启动的LVS的工作模式设置一致
lb_kind DR
#虚拟地址的子网掩码
nat_mask 255.255.255.0
#会话保持时间,因为我们经常使用的是无状态的集群架构,所以这个设置可有可无
#persistence_timeout 50
#转发协议,当然是TCP
protocol TCP #真实的下层Nginx节点的健康监测
real_server 192.168.100.11 80 {
#节点权重,
weight 10
#设置检查方式,可以设置HTTP_GET | SSL_GET
HTTP_GET {
url {
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
#超时时间,秒。如果在这个时间内没有返回,则说明一次监测失败
connect_timeout 3
#设置多少次监测失败,就认为这个真实节点死掉了
nb_get_retry 3
#重试间隔
delay_before_retry 3
}
} real_server 192.168.100.12 80 {
weight 10
HTTP_GET {
url {
path /
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
} real_server 192.168.100.13 80 {
weight 10
HTTP_GET {
url {
path /
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
} }

/etc/init.d/keepalived restart  //启动服务     启动后可以在/var/log/messages 看看有没有启动报错 

三、LVS安装配置

先列出了lvs管理工具的一些参数,供下面命令参考。

-A –add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。
-E –edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D –delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C –clear 清除内核虚拟服务器表中的所有记录。
-R –restore 恢复虚拟服务器规则
-S –save 保存虚拟服务器规则,输出为-R 选项可读的格式
-a –add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e –edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d –delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L –list 显示内核虚拟服务器表
-Z –zero 虚拟服务表计数器清零(清空当前的连接数量等)
–set tcp tcpfin udp 设置连接超时值
–start-daemon 启动同步守护进程。他后面可以是master 或backup,用来说明LVS Router 是master 或是backup。在这个功能上也可以采用keepalived 的VRRP 功能。
–stop-daemon 停止同步守护进程
-t –tcp-service service-address 说明虚拟服务器提供的是tcp 的服务[vip:port] or [real-server-ip:port]
-u –udp-service service-address 说明虚拟服务器提供的是udp 的服务[vip:port] or [real-server-ip:port]
-f –fwmark-service fwmark 说明是经过iptables 标记过的服务类型。
-s –scheduler scheduler 使用的调度算法,选项:rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq, 默认的调度算法是: wlc.
-p –persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
-M –netmask netmask persistent granularity mask
-r –real-server server-address 真实的服务器[Real-Server:port]
-g –gatewaying 指定LVS 的工作模式为直接路由模式DR模式(也是LVS默认的模式)
-i –ipip 指定LVS 的工作模式为隧道模式
-m –masquerading 指定LVS 的工作模式为NAT 模式
-w –weight weight 真实服务器的权值
–mcast-interface interface 指定组播的同步接口
–connection 显示LVS 目前的连接 如:ipvsadm -L -c
–timeout 显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L –timeout
–daemon 显示同步守护进程状态
–stats 显示统计信息
–rate 显示速率信息
–sort 对虚拟服务器和真实服务器排序输出
–numeric -n 输出IP 地址和端口的数字形式

安装

yum -y install ipvsadm  //这个简单,现在linux内核里面已经大部分都内置了lvs的功能,只需要安装管理工具即可

配置 (重启后会消失,要写成脚本)  参数意思看上方列表

ipvsadm -C
ipvsadm -At 192.168.100.1:80 -s rr
ipvsadm -at 192.168.100.1:80 -r 192.168.100.11 -g
ipvsadm -at 192.168.100.1:80 -r 192.168.100.12 -g
ipvsadm -at 192.168.100.1:80 -r 192.168.100.13 -g
ipvsadm

四、NGINX配置

###yum安装nginx并打开Nginx所在服务器的“路由”功能、关闭“ARP查询”功能###

 yum install nginx* -y

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

设置回环IP

ifconfig lo:0 192.168.100.1 broadcast 192.168.100.1 netmask 255.255.255.255 up
route add -host 192.168.100.1 dev lo:0

配置完毕,给nginx做个测试,看看访问是否正常,为了测试效果写了个html用于辨别几台WEB

vi /var/www/html/index.html  (web1)

<html>
<head><title>web1</title></head>
<body>
my ip is 192.168.100.11
</body>
</html>

vi /var/www/html/index.html  (web2)

<html>
<head><title>web2</title></head>
<body>
my ip is 192.168.100.12
</body>
</html>

vi /var/www/html/index.html  (web3)

<html>
<head><title>web3</title></head>
<body>
my ip is 192.168.100.13
</body>
</html>

五、小结一下

1.keepalive,安装完毕了,配置文件也没问题,没有日志报错,能够正常工作。

2.lvs, ipvsadm命令能看到分别的三个web服务,如果没有说明上方配置lvs时没生效

IP Virtual Server version 1.2.1 (size=65536)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP localhost:http rr
-> web2:http Route 1 0 0
-> web1:http Route 1 0 0
-> web3:http Route 1 0 0

3.nginx能够正常访问,并且vip已经能够通过ifconfig查看到

这样应该能够访问vip了,看看展示的界面是不是会分别按照lvs的算法分配给三台nginx服务

LVS+Keepalive+Nginx实现负载均衡的更多相关文章

  1. lvs+keepalived+nginx高性能负载均衡集群

    项目发布时候,别人还能访问呢? 双机主从热备 LVS作用 LVS是一个开源的软件,可以实现传输层四层负载均衡.LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器.目前有 ...

  2. 【nginx】配置Nginx实现负载均衡

    一文中已经提到,企业在解决高并发问题时,一般有两个方向的处理策略,软件.硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最 ...

  3. 配置Nginx实现负载均衡

    在关于高并发负载均衡一文中已经提到,企业在解决高并发问题时,一般有两个方向的处理策略,软件.硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中w ...

  4. Nginx四层负载均衡概述

    目录 Nginx四层负载均衡概述 什么是负载均衡 负载均衡应用场景 四层,七层集群架构 四层负载均衡总结 Nginx如何配置四层负载均衡 nginx四层负载均衡端口转发 Nginx四层负载均衡概述 什 ...

  5. 14、Nginx四层负载均衡

    1.Nginx四层负载均衡基本概述 1.1.什么是四层负载均衡 四层负载均衡基于传输层协议包来封装的(如:TCP/IP),那我们前面使用到的七层是指的应用层,它的组装在四层基础之上,无论四层还是七层都 ...

  6. Nginx四层负载均衡

    目录 Nginx四层负载均衡概述 Nginx如何配置四层负载均衡 使用nginx四层负载均衡实现tcp的转发 Nginx四层负载均衡概述 什么是四层负载均衡 四层负载均衡是基于传输层协议包来封装的(如 ...

  7. Nginx之负载均衡配置(一)

    前文我们聊了下nginx作为反向代理服务器,代理后端动态应用服务器的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12430543.html:今天我们来聊 ...

  8. 配置LVS + Keepalived高可用负载均衡集群之图文教程

    负载均衡系统可以选用LVS方案,而为避免Director Server单点故障引起系统崩溃,我们可以选用LVS+Keepalived组合保证高可用性.  重点:每个节点时间都同步哈! C++代码 [r ...

  9. Nginx的负载均衡 - 整体架构

    Nginx的负载均衡 - 整体架构 Nginx版本:1.9.1 我的博客:http://blog.csdn.net/zhangskd Nginx目前提供的负载均衡模块: ngx_http_upstre ...

随机推荐

  1. C++笔记008:C++对C的扩展——命名空间 namespace基础

    原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 第一, 命名空间的意义 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突. 我认识两位叫“A”的朋友,一 ...

  2. SSM整合时初始化出现异常

    java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException  ...

  3. 正则表达式-Regular expression学习笔记

    正则表达式 正则表达式(Regular expression)是一种符号表示法,被用来识别文本模式. 最近在学习正则表达式,今天整理一下其中的一些知识点 grep - 打印匹配行 grep 是个很强大 ...

  4. 如何使用git命令从github上取得项目

    首先我们要安装git, git官网:https://git-scm.com/点击打开链接 拉取项目步骤详解 新建文件夹,最好取为项目英文名***Project 进入文件夹,空白处右键,选择git Ba ...

  5. CentOS6的/etc/rc.local不执行的问题解决

    小编在一个场景下,希望java -jar abc.jar命令在系统开机自启动是自动执行,于是乎在文件/etc/rc.local中写入nohup java -jar abc.jar &,重启后发 ...

  6. 常量的三种定义方式和static在c语言中的三种修饰

    c语言的常量在执行期间为固定值,在定义后无法被修改常量可以是任何的数据基本类型,可以为整形,浮点常量,字符和字符串常量1,使用const关键字2, 使用宏定义3,使用枚举常量 枚举: #include ...

  7. 每天看一片代码系列(四):layzr.js,处理图片懒加载的库

    所谓图片的懒加载,即只有当图片处于或者接近于当前视窗时才开始加载图片.该库的使用方法非常简单: var layzr = new Layzr({ attr: 'data-layzr', // attr和 ...

  8. Redis系列五 Redis持久化

    Redis持久化 一.RDB(Redis DataBase) 1.介绍 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. Red ...

  9. gdb 分析出错

    1 创建测试代码test.php <?php function test1(){ while(true){ sleep(1); } }echo getmypid() "\r\n&quo ...

  10. mysql表的核心元数据

    索引的 mysql> show indexes from recordsInRangeTest; +--------------------+------------+------------- ...