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

[经验分享] lvs nat搭建

[复制链接]

尚未签到

发表于 2019-1-3 10:14:00 | 显示全部楼层 |阅读模式
  生产环境网站离不开负载均衡、高可用性这样的字眼,不用解释便知道其中的意义与重要性。高可用性可以用keepalived实现,负载均衡可以用lvs或者nginx实现,二者的区别是lvs基于网络层,nginx基于应用层或者基于浏览器。lvs有3中实现方式,分别是nat、dr、tunel(隧道),三者大体相似,这里介绍nat模式,本文也没用介绍keepalived,以后有时间再写。

  实验环境:使用vmware虚拟出4台linux,有一台作为client(rhel4.6),其中两台作为realserver(rhel5.6),另外一台作为lvs-nat(rhel5.6),各机器模拟信息如下图:


  vmware里的各虚机网卡均采用桥接模式,lvs主机另添加了一块网卡eth1,共用两块网卡。
  实验过程:在实验前,统一把各主机selinux和iptables关掉,lvs软件也就是这里安装的ipvsadm软件。

  1.lvs配置:

  先静态配置两个ip:eth0、eth1:
  LVS# cat /etc/sysconfig/network-scripts/ifcfg-eth0
  # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
  DEVICE=eth0
  BOOTPROTO=static
  IPADDR=192.168.65.200
  NETWORK=192.168.65.0
  NETMASK=255.255.255.0
  BROADCAST=192.168.65.255
  HWADDR=00:0C:29:03:54:66
  ONBOOT=yes
  

  LVS# cat /etc/sysconfig/network-scripts/ifcfg-eth1
  # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
  DEVICE=eth1
  BOOTPROTO=static
  IPADDR=192.168.200.200
  NETWORK=192.168.200.0
  NETMASK=255.255.255.0
  BROADCAST=192.168.200.255
  ONBOOT=yes
  HWADDR=00:0c:29:03:54:70
  

  LVS#mount /dev/cdrom /media
  LVS#cd /media/Cluster
  LVS# rpm -ivh ipvsadm-1.24-12.el5.i386.rpm
  到这里,ipvsadm功能可以使用了,下面指明lvs主机与realserver主机:
  LVS# ipvsadm -A -t 192.168.200.200:80 -s rr   ///增加一台新的虚拟服务器,tcp地址为192.168.200.200,指明端口是web,使用调度算法是rr
  LVS# ipvsadm -a -t 192.168.200.200:80 -r 192.168.200.210 -m   ///增加一个realserver:192.168.200.210,lvs的模式为nat
  LVS# ipvsadm -a -t 192.168.200.200:80 -r 192.168.200.220 -m   ///如果有很多台realserver,可以一次往下添加
  ......
  LVS# ipvsadm -ln     ///检验刚刚添加的配置是否正确
  LVS# vi /etc/sysctl.conf

  net.ipv4.ip_forward = 1   ///将0改为1,开启ip转发功能,因为这里的lvs相当于分离器,将收到的请求转发给realserver
  LVS# /sbin/sysctl -p   ///打印上一步的修改,检查有无错误
  到这里,lvs机器基本信息配置完成,lvs不需要配置web(apache)。
  2.配置realserver RS1:

  首先将ip地址eth0写成静态:
  RS1# cat /etc/sysconfig/network-scripts/ifcfg-eth0
  # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
  DEVICE=eth0
  BOOTPROTO=static
  IPADDR=192.168.200.210
  NETWORK=192.168.200.0
  NETMASK=255.255.255.0
  BROADCAST=192.168.200.255
  GATEWAY=192.168.200.200
  HWADDR=00:0C:29:F8:73:52
  ONBOOT=yes
  

  RS1# yum install httpd

  RS1# vi /var/www/html/index.html
  RS1-----IP:192.168.200.210
  RS1#service httpd restart

  

  3.配置realserver RS2:

  RS2# cat /etc/sysconfig/network-scripts/ifcfg-eth0
  # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
  DEVICE=eth0
  BOOTPROTO=static
  IPADDR=192.168.200.220
  NETWORK=192.168.200.0
  NETMASK=255.255.255.0
  BROADCAST=192.168.200.255
  GATEWAY=192.168.200.200
  HWADDR=00:0C:29:05:BB:BE
  ONBOOT=yes
  

  RS2# yum install httpd
  RS2# vi /var/www/html/index.html
  RS2---------ip:192.168.200.220
  RS2# service httpd restart
  

  4.客户端的配置:

  client# cat /etc/sysconfig/network-scripts/ifcfg-eth0
  DEVICE=eth0
  BOOTPROTO=static
  IPADDR=192.168.65.100
  NETWORK=192.168.65.0
  NETMASK=255.255.255.0
  BROADCASTL=192.168.65.255
  GATEWAY=192.168.65.200
  HWADDR=00:0C:29:76:ED:97
  ONBOOT=yes
  TYPE=Ethernet
  接下来再客户机上面执行测试操作:
  在命令符终端上面验证:

  在浏览器上面验证:

  在客户机上面验证表明lvs功能发挥成功。
  下面在lvs机器上面查看实验过程:

  到这里,种种迹象表明lvs的nat模式搭建成功。下面介绍相关原理:
  1,virtual-service-address:是指虚拟服务器的ip 地址
  2,real-service-address:是指真实服务器的ip 地址
  3,scheduler:调度方法
  (lna@networksbase.com 翻译 ipvsadm v1.21 2004 年4 月)
  ipvsadm 的用法和格式如下:
  ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p
  [timeout]] [-M netmask]
  ipvsadm -D -t|u|f virtual-service-address
  ipvsadm -C
  ipvsadm -R
  ipvsadm -S [-n]
  ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port
  [-g|i|m] [-w weight]
  ipvsadm -d -t|u|f service-address -r server-address
  ipvsadm -L|l [options]
  ipvsadm -Z [-t|u|f service-address]
  ipvsadm --set tcp tcpfin udp
  ipvsadm --start-daemon state [--mcast-interface interface]
  ipvsadm --stop-daemon
  ipvsadm -h
  命令选项解释:
  有两种命令选项格式,长的和短的,具有相同的意思。在实际使用时,两种都可
  以。
  -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|-l --list 显示内核虚拟服务器表
  -Z --zero 虚拟服务表计数器清零(清空当前的连接数量等)
  --set tcp tcpfin udp 设置连接超时值
  --start-daemon 启动同步守护进程。他后面可以是master 或backup,用来说
  明LVS Router 是master 或是backup。在这个功能上也可以采用keepalived 的
  VRRP 功能。
  --stop-daemon 停止同步守护进程
  -h --help 显示帮助信息
  其他的选项:
  -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 的工作模式为直接路由模式(也是LVS 默认的模式)
  -i --ipip 指定LVS 的工作模式为隧道模式
  -m --masquerading 指定LVS 的工作模式为NAT 模式
  -w --weight weight 真实服务器的权值
  --mcast-interface interface 指定组播的同步接口
  -c --connection 显示LVS 目前的连接 如:ipvsadm -L -c
  --timeout 显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout
  --daemon 显示同步守护进程状态
  --stats 显示统计信息
  --rate 显示速率信息
  --sort 对虚拟服务器和真实服务器排序输出
  --numeric -n 输出IP 地址和端口的数字形式
  

  

  算法:
  rr一人一个,缺点是当群中有的机器性能好,有的性能坏,坏的扛不住
  wrr基于权重的rr算法,缺点是新加的RS不会分担旧RS的负载。
       如RS1   负载100
         RS2   负载100
         RS3(new) 1    RS3永远比旧RS少负担100
  lc 最少链接  新加入的RS会主动承担负载,lvs会将新的请求全部分给新RS,直到新RS的负载和旧的大致相等的时候在分发
  wlc基于权重的lc
  lblc 尽可能让同一个访问分到同一个RS上,CDN常用,可以提高命中
  sh 基于源IP的hash算法,保证同一个源IP的请求分到同一台RS上。主要用在会话连接中,如输入账号密码,如果用rr,两次请求就会切换到不同的RS上,就会需要重新输入账号密码,除非用cookice。
  dh基于目标IP的hash算法
  





运维网声明 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-658888-1-1.html 上篇帖子: lvs之fullnat与pacemaker的构建 下篇帖子: cacti监控LVS
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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