设为首页 收藏本站
查看: 857|回复: 0

[经验分享] 简单实现LVS

[复制链接]

尚未签到

发表于 2019-1-2 13:34:08 | 显示全部楼层 |阅读模式
  LVS-DNAT
  工作原理:
  在数据包进入本机内部之前,就改变它的目的地址(需要在内核实现)

  LVS的工作机制类似iptables,一部分工作在用户空间(ipvsadm),一部分工作在内核空间
  安装ipvsadm软件就足以实现LVS的功能
  使用ipvsadm,早期需要重新编译内核,不过现在版本的redhat默认直接做进内核
  # 查看内核是否含有ipvs
  grep –I –c 5 ipvs /boot/config-‘uname -r’
  ipvsadm命令的使用:
  ipvsadm功能
  1:定义集群服务
  2:定义真正的REALSERVER
  3:查看定义的信息
  1.定义集群服务
  ipvsadm
  -t 基于tcp的集群服务
  -u 基于udp
  -f 基于firewall的集群服务,防火墙的类型
  -A 添加一个新集群
  -E 修改一个集群
  -s 指定算法 默认 wlc
  -D 删除一个集群
  -g|i|m gateway|internet|net DR|TUN|DNAT模型
  -w 权重
  -C 清空规则
  -S 保存规则到某个文件
  -R 从某个文件恢复规则
  -L|l 查看
  -n --numeric 数字方式显示地址
  --stats 显示统计的数据信息(statistics的简写)
  --rate 显示速率信息
  -Z 清空计数器
  添加/删除director
  ipvsadm -A| -E -t |-u VIP:port -s
  ipvsadm -D -t|-u VIP:port
  添加/删除realserver
  ipvsadm -a |-e -t|-u VIP:port -r REALSERVER [-g|-i|-m] [-w weight]
  ipvsadm -d -t|-u VIP:port -r READSERVER
  配置安装LVS过程
  1.安装OS
  2.后方安装apache
  3.设置默认路由
  4.安装lvs
  5.配置LVS,定义好规则
  6.做测试

  1.两个apache作为realserver 只提供静态页面
  2.Directory打开转发功能
  3.两个realserver处于同一个网段
  准备:
  1) 3台干净的虚拟机:RS1 RS2 Director (需要加一块网卡)
  2) 配置各自的好yum源
  一:配置好地址,安装软件
  realserver端:
  ifconfig eth0 10.0.0.11/8
  route add default gw 10.0.0.1/8
  yum install httpd php php-mysql mysql mysql-server php-mbstring -y
  # 测试网页是否显示
  vim /var/www/html/index.html
  realserver1
  service httpd start
  elinks http://10.0.0.11
  directory端:
  ifconifg eth0 10.0.0.1/8
  yum install ipvsadm
  # 打开ipforward
  echo 1 > /proc/sys/net/ipv4/ip_forward
  #添加director
  ipvsadm -A -t 172.16.14.1:80 -s rr
  # 查看集群服务
  ipvsadm -L -n
  #添加realserver
  ipvsadm -a -t 172.16.14.1:80 -r 10.0.0.11 -m
  ipvsadm -a -t 172.16.14.1:80 -r 10.0.0.12 -m
  ipvsadm -L -n
  集群已经构建好了。。。。用浏览器测试下

  # 压力测试,十个并发连接,发起10000次
  ab -c 10 -n 10000 http://172.16.14.1/index.html
  # 查看结果

  # 使用加权最少连接
  ipvsadm -E -t 172.16.14.1:80 -s wlc
  # 修改权重
  ipvsadm -e -t 172.16.14.1:80 -r 10.0.0.11 -m -w 3
  # 压力测试,十个并发连接,发起10000次
  ab -c 10 -n 10000 http://172.16.14.1/index.html
  # 换别的算法来测试,看看效果 单引号
  watch -n 1 ‘ipvsadm -L -n’
  # 保存ipvsadm 结果,否则开机就没有了
  # 对于redhat
  service ipvsadm save
  chkconfig ipvsadm on
  # 或者
  ipvsadm -S > /etc/sysconfig/ipvsadm
  LWC算法结果:

  RR算法结果:

  LC算法结果:

  SED算法结果:
  正常:

  受干扰

  ==========================================================================
  LVS-DR
  工作原理
  通过设置内核参数,禁止RS直接响应用户请求,既将RS都隔离起来,只允许它们响应DR转发过来的请求。
  使用LVS-DR 前提
  内核有 arp_announce 和 arp_ignore
  arp_annouce 定义通过哪个地址向别人通告本地MAC-ip对应信息所定义的限制级别
  0 表示响应任意本地地址,任何接口(IP地址属于内核而不是网卡)
  1 尽可能的避免用和来源主机的IP地址非同一个网络的地址响应它
  2 总是用本地的最佳地址给予响应(同一个网段)
  arp_ignore 定义响应方式和类型
  0 无论地址放在任何地方都响应
  1 只有在所请求的地址和请求所进来的接口一致(既进来的接口和请求的地址是同一个网段)的时候才响应
  想想一下 arp_ignore=1 arg_annouce=2
  服务器拒绝响应2.2
  解决数据进入:
  为了避免RS直接响应,给服务器的lo:0设置VIP地址,给本地网卡设置成CIP,这样RS就不会直接响应了,隐藏了RS
  解决数据出去:
  而默认情况下,Linux设置数据包从哪块网卡出去,源地址设为该网卡地址,通过添加一条特殊路由信息,如果目标地址是lo的VIP地址,那么出去的时候源地址设置为lo的地址。
  路由信息的原理:
  添加一条主机路由,将VIP的地址自己设置成一个网段,既子网掩码为255.255.255.255,这样VIP出去的时候没有比VIP更优的了,就成为最佳IP
  
  相关网络规划如下:

  需要配置:
  1.Lo设为VIP
  2.修改内核参数
  3.添加特殊路由
  配置LVS-DR须注意:
  1.设置网卡模式为桥接
  2.RIP地址不一定必须是公网地址
  一、设置网卡
  Director端
  1.DIP配置在接口上,VIP要配置在接口别名上
  # director ,一步到位,否则需要重启网络服务
  ifconfig eth0:0 172.16.14.1 broadcast 172.16.14.1 netmask 255.255.255.255 up # VIP
  ifconfig eth0 172.16.14.10 # DIP
  VIP应该设置在别名地址上,DIP设置在静态地址上,所有VIP设置在eth0:0

  2.RS端:DIP 要配置在接口上,VIP要配置在lo的别名上
  ifconfig eth0 172.16.14.11 # RIP
  # 配置内核参数,禁止响应对VIP的ARP广播请求
  echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
  echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
  # 此时设置VIP,就不会和director冲突
  # 255.255.255.255 自闭
  # VIP 只向自己广播
  ifconfig lo:0 172.16.14.1 broadcast 172.16.14.1 netmask 255.255.255.255 up
  # 增加路由信息,所有出去的信息都以dev的信息为准
  route add -host 172.16.14.1 dev lo:0
  route -n
  所有的RS都要设置
  
  二.配置ipvsadm
  ipvsadm -C # 去掉上次的
  ipvsadm -A -t 172.16.14.1:80 -s wlc
  ipvsadm -a -t 172.16.14.1:80 -r 172.16.14.11 -g w 2
  ipvsadm -a -t 172.16.14.1:80 -r 172.16.14.12 -g w 4
  ipvsadm -L -n

  ipvsadm -L -n --rate 统计数据包





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-658684-1-1.html 上篇帖子: LNMP+SSL+ LVS 下篇帖子: LB lvs
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表