ubuntu 12.04下配置LVS-DR模式负载均衡

最近折腾的LVS的问题,做个记录!正常是三台以上服务器可以,一台做负载,另外两台做真是服务器,但我手上的环境实际上只有两台,那就意味着其中一台纪要做负载又要做真实服务器。

首先要检查Linux内核是否支持LVS:

modprobe -l | grep ipvs
如果输出类似于如下内容,那么就是OK的:

kernel/net/netfilter/ipvs/ip_vs.ko
kernel/net/netfilter/ipvs/ip_vs_rr.ko
kernel/net/netfilter/ipvs/ip_vs_wrr.ko
kernel/net/netfilter/ipvs/ip_vs_lc.ko
kernel/net/netfilter/ipvs/ip_vs_wlc.ko
kernel/net/netfilter/ipvs/ip_vs_lblc.ko
kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
kernel/net/netfilter/ipvs/ip_vs_dh.ko
接下来安装ipvsadm管理工具:

sudo apt-get install ipvsadm
安装成功后执行 ipvsadm 命令,如果看到以下字样就说明安装成功:

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
接下来也别一步一不做了,直接copy我这现成的脚本,改里面的IP,直接用就OK了,简单粗暴!

操作步骤及脚本
在LVS服务器上创建一个新的脚本文件 lv-dr.sh,把下面的内容扔进去:

#!/bin/bash
######################
# data 20150727      #
# website Gongzi.org #
######################
vip=10.46.239.56
rs1=10.46.239.50
rs2=10.46.239.51

#set vip address and add route
/sbin/ifconfig bond0:0 $vip broadcast $vip netmask 255.255.255.255 up
/sbin/route add -host $vip dev bond0:0
route -n

# update /etc/sysctl.conf
echo "1" >/proc/sys/net/ipv4/ip_forward
echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/eth0/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/bond0/send_redirects
sysctl -p

#clear ipvs tables
ipvsadm -C

#set ipvs

ipvsadm -A -t $vip:8080 -s wrr -p $((3600 * 48))
ipvsadm -a -t $vip:8080 -r $rs1:8080 -g -w 1
ipvsadm -a -t $vip:8080 -r $rs2:8080 -g -w 1

#run lvs
/sbin/ipvsadm
然后修改里面的信息:

Tips!
VIP:你的虚拟IP
rs12:你的真是服务器IP
以及后面的8080 都是你要负载的端口
另外,WEB项目需要设置会话保持,不然会出问题,上面代码中的:-p $((3600 * 48))便是。
然后到真是服务器中创建一个lvs-rs.sh 的脚本,扔进去以下内容:

#!/bin/bash
######################
# data 20150727      #
# website Gongzi.org #
######################
vip=10.46.239.56
ifconfig lo:0 $vip netmask 255.255.255.255 broadcast $vip up
route add -host $vip dev lo:0
#echo "0" >/proc/sys/net/ipv4/ip_forward  #这一步是关闭真实服务器的转发功能
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
注意:此脚本中的网关要和虚ip一样,掩码不能同于主网卡的(即eth0或1的)
接下来就可以测试了。

一些备注说明及常用参数
以下是ipvs的一些常用命令及参数说明,网上找的,我摘录了几条常用的,供参考:

-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 虚拟服务表计数器清零(清空当前的连接数量等)
-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]
-r --real-server server-address 真实的服务器[Real-Server:port]
-g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i --ipip 指定LVS 的工作模式为隧道模式
-m --masquerading 指定LVS 的工作模式为NAT 模式
-w --weight weight 真实服务器的权值
还有其他几种模式,NAT之类的,这里直说DR的,也是性能最好的一种。

时间: 2024-10-23 03:04:43

ubuntu 12.04下配置LVS-DR模式负载均衡的相关文章

在Windows以及Ubuntu 12.04下使用共享打印机的办法

针对各个办公室里面都已经配置打印机了,为了节约资源,该打印机想必已经被网管设置成了共享,然而我们应该如何进行使用呢? 目前常用的系统是Ubuntu 12.04,偶尔想打印东西的不想切换到XP系统下,就此简单介绍下如何分别在Ubuntu以及Windows系统下使用此台共享打印机的方法,当然前提是连接此台共享打印机的主机以及打印机都得开机着,以及你们在同一个局域网内和同工作组里. 环境:笔者办公室里的打印机连接的主机是Window XP系统,其IP地址是172.20.4.114,没有设置访问打印机密

嵌入式小白求教:Ubuntu 12.04下RT73 USB无线网卡移植实现的若干问题

问题描述 嵌入式小白求教:Ubuntu 12.04下RT73 USB无线网卡移植实现的若干问题 1C 最近想要在S3C6410开发板上使用RT73 USB无线网卡实现无线连接,保证6410与外部云服务器的通信.以下是自己遇到的一些困惑或问题,想请教大神点津.1. Ubuntu虚拟机上设置的eth0的ip地址经常性的会丢失,导致刚ping通的链接又出现问题:2. 6410上不知为何,每次启动时都表现为eth0关闭,需要重新ifconfig eth0 up,但是这样的话就会出现ip地址每次都需要自己

Ubuntu 12.04 下安装 Eclipse

方法一:(缺点是安装时附加openjdk等大量程序并无法去除,优点是安装简单) $ sudo apt-get install eclipse   方法二:(优点是安装内容清爽,缺点是配置麻烦)1.安装JDK,参考 Ubuntu 12.04 下安装 JDK 7 2.下载 Eclipse   从 http://www.eclipse.org/downloads/index-developer.php下载合适版本,如:Eclipse IDE for C/C++ Developers 3.解压文件$ s

Ubuntu 12.04下SQLite数据库简单应用

       SQLite,是一款轻型的数据库,实现了多数的SQL-92标准,包括事务,就是代表原子性.一致性.隔离性和持久性的(ACID),触发器和多数的复杂查询.SQLite数据库是Android平台软件开发必备数据库产品! 在Ubuntu 12.04下进行SQLite开发简单实例如下: 1. 安装SQLite3           hadron@hadron ~ $ sudo apt-get install sqlite sqlite3 2. 查看版本号           hadron@

Ubuntu 12.04下Apache2.2与Tomcat6的整合详细教程

有过服务器搭建经验的人都知道,如果做J2EE开发,把Tomcat和Apache整合起来有如下几点好处:1,利用Apache做负载均衡和容错:2,Apache专注做静态网页解析,tomcat专注做动态网页解析,这样能提高服务器的效率:3,应用程序可以无缝升级. 最近用Ubuntu12.04做服务器(原理上不应该用最新版本而应该用稳定版本),看了很多关于apache与tomcat整合的书,最后发现书上的内容对ubuntu12.04来说有点出入.下面总结一下经验供大家参考: 安装apache和tomc

centos下配置Nginx反向代理负载均衡服务器教程

准备: Proxy-Server:1.1.1.22(负载均衡服务器) Nginx-Server23:1.1.1.23(web23) Nginx-Server24:1.1.1.24(web24) 环境版本: Linux Nginx-Proxy 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux ①:安装配置完成Nginx WEB服务器预配置: [root@Nginx-Ser

Ubuntu 12.04下解决Tomcat自启动问题

  当我们安装好Tomcat使用后发现,每次启动都需要在终端中手动键入sudo /var/tomcat/bin/startup.sh,那么我们怎么解决这个问题呢 以下是我的解决方案: 1.首先打开终端,输入su,接着输入ROOT的密码获得ROOT权限.进入/etc文件夹(使用cd /etc命令) 2.打开rc.local文件(在/etc目录下使用vi rc.local命令) 3.rc.local文件内容默认如下 #!/bin/sh -e # # rc.local # # This script

ubuntu 12.04中配置 VPN pptpd的步骤

在 Ubuntu 中建立 pptp server 需要的软件包为 pptpd,用 apt-get 即可安装: sudo apt-get <abbr title="Thanks zz!">installabbr> pptpd 系统会自动解决依赖关系,安装好后,需要进行一番设置.首先编辑 /etc/pptpd.conf sudo nano /etc/pptpd.conf 去掉文件最末端的 localip 和 remoteip 两个参数的注释,并进行相应修改.这里,loca

ubuntu 12.04下播放器乱码问题的处理解决

终端下输入(用户家目录) vim .profile 在文件的末尾处添加如下信息 export GST_ID3_TAG_ENCODING=GBK:UTF-8:GB18030 export GST_ID3V2_TAG_ENCODING=GBK:UTF-8:GB18030 使修改即时生效,在终端中输入 source  .profile 1 # ~/.profile: executed by the command interpreter for login shells. 2 # This file