yuxing 发表于 2019-1-3 10:14:00

lvs nat搭建

  生产环境网站离不开负载均衡、高可用性这样的字眼,不用解释便知道其中的意义与重要性。高可用性可以用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),各机器模拟信息如下图:

http://s3.运维网.com/wyfs02/M02/28/80/wKioL1N513aDCXKBACo_koE7gb8411.jpg
  vmware里的各虚机网卡均采用桥接模式,lvs主机另添加了一块网卡eth1,共用两块网卡。
  实验过程:在实验前,统一把各主机selinux和iptables关掉,lvs软件也就是这里安装的ipvsadm软件。

  1.lvs配置:

  先静态配置两个ip:eth0、eth1:
  LVS# cat /etc/sysconfig/network-scripts/ifcfg-eth0
  # Advanced Micro Devices 79c970
  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 79c970
  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 79c970
  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 79c970
  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
  接下来再客户机上面执行测试操作:
  在命令符终端上面验证:
http://s3.运维网.com/wyfs02/M00/28/80/wKioL1N54X3SuXE4AAF2koq3liI132.jpg
  在浏览器上面验证:
http://s3.运维网.com/wyfs02/M02/28/80/wKiom1N54jTCz0VWAAQe8FQ4OOE382.jpg
  在客户机上面验证表明lvs功能发挥成功。
  下面在lvs机器上面查看实验过程:
http://s3.运维网.com/wyfs02/M02/28/80/wKioL1N54rmDWJ_PAAUWUwiBOEQ246.jpg
  到这里,种种迹象表明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
  ] [-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
  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 的服务
   or
  -u --udp-service service-address 说明虚拟服务器提供的是udp 的服务
   or
  -f --fwmark-service fwmark 说明是经过iptables 标记过的服务类型。
  -s --scheduler scheduler 使用的调度算法,有这样几个选项
  rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
  默认的调度算法是: wlc.
  -p --persistent 持久稳固的服务。这个选项的意思是来自同一个客
  户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
  -M --netmask netmask persistent granularity mask
  -r --real-server server-address 真实的服务器
  -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]
查看完整版本: lvs nat搭建