Linux里面lvs的基础命令,Linux中使用ipvsadm配置LVS集群的基本方法

LVS集群有DR、TUN、NAT三种配置模式,可以对www服务、FTP服务、MAIL服务等做负载均衡,下面通过搭建www服务的负载均衡实例,讲述基于DR模式的LVS集群配置。

一、 Director Server的配置  在Director Server上配置LVS负载均衡集群,有两种方法:

a. 通过ipvsadm命令行进行配置

b. 通过Redhat提供的工具piranha来配置LVS

通过ipvsadm命令行方式配置LVS

安装IPVS后,就可以配置LVS集群了,首先在Director Server上绑定一个虚拟IP(也叫VIP),此IP用于对外提供服务,执行如下命令:

复制代码代码如下:

[root@localhost ~]#ifconfig eth0:0 192.168.60.200 broadcast 192.168.60.200 netmask 255.255.255.255 up

此处在eth0设备上绑定了一个虚拟设备eth0:0,同时设置了一个虚拟IP是192.168.60.200,也就是上面我们规划的IP地址,然后指定广播地址也为192.168.60.200,需要特别注意的是,这里的子网掩码为255.255.255.255。

然后给设备eth0:0指定一条路由,执行如下指令:

复制代码代码如下:

[root@localhost ~]#route add -host 192.168.60.200 dev eth0:0

接着启用系统的包转发功能,从而使系统充当路由器,执行如下指令:

复制代码代码如下:

[root@localhost ~]#echo "1" >/proc/sys/net/ipv4/ip_forward

指令中,参数值为1时启用ip转发,为0时禁止ip转发。其实在DR模式中,开启系统的包转发功能不是必须的,而在NAT模式下此操作是必须的。

然后开始配置ipvs,执行如下操作:

复制代码代码如下:

[root@localhost ~]#ipvsadm -C

[root@localhost ~]#ipvsadm -A -t 192.168.60.200:80 -s rr -p 600

[root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.132:80 -g

[root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.144:80 -g

上面操作中,第一行是清除内核虚拟服务器列表中的所有记录,第二行是添加一条新的虚拟IP记录。这个新的IP是192.168.60.200,同时指定 持续服务时间为600秒。第三、四行是在新加虚拟IP记录中添加两条新的Real Server记录,并且指定LVS 的工作模式为直接路由模式。

最后,启动LVS服务,执行如下操作:

复制代码代码如下:

[root@localhost ~]#ipvsadm

这样,LVS在Director Server上的配置就完成了。

为了管理和配置的方便,可以将上面的操作写出一个脚本文件,脚本内容如下:

复制代码代码如下:

#!/bin/bash

VIP=192.168.60.200

RIP1=192.168.60.132

RIP2=192.168.60.144

GW=192.168.60.1

# set the Virtual IP Address

/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up

/sbin/route add -host $VIP dev eth0:0

echo "1" >/proc/sys/net/ipv4/ip_forward

#Clear IPVS table

/sbin/ipvsadm -C

#set LVS

/sbin/ipvsadm -A -t $VIP:80 -s rr -p 600

/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g

/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g

#Run LVS

/sbin/ipvsadm

#end

也可以写成可启动与停止的服务脚本,脚本内容如下:

复制代码代码如下:

#!/bin/sh

# description: Start LVS of Director server

VIP=192.168.60.200

RIP1=192.168.60.132

RIP2=192.168.60.144

./etc/rc.d/init.d/functions

case "$1" in

start)

echo " start LVS of Director Server"

# set the Virtual IP Address and sysctl parameter

/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up

echo "1" >/proc/sys/net/ipv4/ip_forward

#Clear IPVS table

/sbin/ipvsadm -C

#set LVS

/sbin/ipvsadm -A -t $VIP:80 -s rr -p 600

/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g

/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g

#Run LVS

/sbin/ipvsadm

;;

stop)

echo "close LVS Directorserver"

echo "0" >/proc/sys/net/ipv4/ip_forward

/sbin/ipvsadm -C

/sbin/ifconfig eth0:0 down

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

esac

将此脚本命名为lvsDR文件,然后把文件放到/etc/init.d下,执行:

复制代码代码如下:

[root@localhost ~]#chomd 755 /etc/init.d/lvsDR

最后可以通过下面命令启动或停止LVS服务:

复制代码代码如下:

service lvsDR {start|stop}

到此为止,命令行方式配置Director Server完毕。

二、Real server 的配置   在lvs的DR和TUn模式下,用户的访问请求到达真实服务器后,是直接返回给用户的,而不再经过前端的Director Server,因此,就需要在每个Real server节点上增加虚拟的VIP地址,这样数据才能直接返回给用户,增加VIP地址的操作可以通过创建脚本的方式来实现,创建文件/etc /init.d/lvsrs,脚本内容如下:

复制代码代码如下:

#!/bin/bash

VIP=192.168.60.200

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

/sbin/route add -host $VIP dev lo:0

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

#end

此操作是在回环设备上绑定了一个虚拟IP地址,并设定其子网掩码为255.255.255.255,与Director Server上的虚拟IP保持互通,然后禁止了本机的ARP请求。

PS: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 是aster 或是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 地址和端口的数字形式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 内核 睡眠,linux内核对S3C2410睡眠模式的支持有哪些?

一、S3C2410支持4种供电模式(1)NORMAL MODE耗电最大、可以通过关闭具体控制器的时钟来节电(2)SLOW MODE在此模式下可以没有内部PLL,耗电情况依赖于外部时钟的频率(3)IDLE MODEFCLK被关断,主要由于CPU core节电。可以任何通过外部中断唤醒(4)Power_OFF MO…

linux c timeval 转化为标准时间,Linux_学习笔记_-_时钟_定时器

Linux 时钟_定时器1 时钟时钟这个东西,实际上是作为一种工具而存在,内核通过时钟来感知、管理时间。这里的时钟,更主要的还是软件上的概念,系统通过维护软件时钟来追踪时间1.1 几个概念1、时钟中断:由硬件产生的电信号…

linux 修改块大小,linux 查看及修改os系统块的大小

查看os系统块的大小[root]# /sbin/tune2fs -l /dev/sda1查看os系统页的大小[oracleskate-test ~]$ getconf PAGESIZE4096修改块的大小:创建文件系统时,可以指定块的大小。如果将来在你的文件系统中是一些比较大的文件的话,使用较大的块大小将得到较好的性…

linux的vim多选择,真的有(很多)linux大牛用vim写项目吗?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼作为一名非程序员半吊子运维,很想问一个问题:真的有(很多)linux大牛用vim写项目吗?最近折腾自己的路由器,要在LEDE的luci框架里加个显示interface信息的模块。按照惯例ggl一下最后在s…

linux spi驱动分析 三,Linux下SPI驱动分析

/* 神奇的分割线 */626/*-------------------------------------------------------------------------*/627628/* Core methods for SPI master protocol drivers. Some of the629 * other core methods are currently defined as inline functions.630 */631632/**633 * spi_…

c语言程序综合实习学生成绩,C语言程序设计综合实习报告

课题一:用指针优化学生成绩排名一、目的1.熟悉变量的指针和指向变量的的指针变量的概念和使用2.熟悉数组的指针和指向数组的的指针变量的概念和使用3. 掌握冒泡法或选择法排序的算法4. 掌握函数的定义、调用、声明,以及参数的两种…

c语言练习的软件,我想学C语言,在自己的电脑上练习,要安装什么软件呢?

希望能对你有所帮助:1。 C语言学习系统 3。2C语言是一门非常有用高级语言,是您踏上计算机学习之路的必修课,几乎所有的计算机考试dl。pconline。com。cn/html/1/9/dlid6199&dltypeid1&pn0&。html2。 C语言学习系统 3。2C语言是一门非常有用高级语言,是您…

c语言ATM机文件储存账号密码,C语言实现_ATM自动取款机系统

1、欢迎界面的实现用函数welcom实现,建立.h文件命名welcom.hvoid wel()//欢迎界面;{FILE *fp;if((fpfopen("data/welcome.txt","r"))!NULL){char ch[10000];while(!feof(fp)){fgets(ch,100,fp);printf(ch);Sleep(200);}printf("…

c语言求最多啤酒数,C语言,算法、动态规划:有一个箱子的容量为v(正整数,0=v=20000),同时有n个物品(0n=30),...

满意答案24k纯真爱l2013.11.07采纳率:42% 等级:12已帮助:9552人#include#define N 30int xiangzi(int n ,int V ,int a[]) //楼主后面的Vo数组必须放进递归函数里面或定义成全局数组 另外h[n]什么情况??{int minv,t,mV;if(n0){if(a[n]&l…

c语言休眠函数useconds类型,带你了解C语言中的Sleep函数(附代码)

Sleep函数:功 能: 执行挂起一段时间用 法:unsigned sleep(unsigned seconds);注意:在VC中使用带上头文件#include ,在Linux下,gcc编译器中,使用的头文件因gcc版本的不同而不同#include 在VC中,Sleep中的第一个英文字符为大写的"S" ,在linux下不要大写&…

2017电大c语言考试时间,2017年电大 《c语言程序设计》a课程考核说明.doc

2017年电大 《c语言程序设计》a课程考核说明中央广播电视大学计算机科学与技术专业C语言程序设计A课程考核说明(2008)一、考核说明《C语言程序设计》课程是全国电大系统计算机科学与技术专业(本科)的一门基础必修课程。本课程是学习数据结构、操作系统、计算机网络、数据库、软…

c语言可循环计算器代码,可编程简易计算器(代码)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼while(sign[0]!a){//if(input[index]){for(int i0;i<4;i){if(firsttime 1)i3;//提取第i1个数字dexto1;char num_str[INPUT_LEN]{};while(input[index]){if(isdigit(input[index]))num_str[dexto]input[index];elseif((input[ind…

android 动态文本选取,android-用动态文本更新UI

我会使用处理程序.private static final int WHAT 1;private static final int TIME_TO_WAIT 5000;Handler regularHandler new Handler(new Handler.Callback() {public boolean handleMessage(Message msg) {// Do stuffregularHandler.sendEmptyMessageDelayed(msg.what,…

京东广告联盟android,京东APP联盟SDKAndroid版接口说明文档1.0.PDF

京东APP联盟SDKAndroid版接口说明文档1.0京东APP 联盟SDK Android 版接口说明文档1.01. 嵌入SDK1.1 添加SDKAndroid Studio 环境&#xff1a;菜单New->New Module->Import .jar or .aar package&#xff0c;然后选中App联盟SDK 所带的jar 文件。EclipseADT 环境: 将App 联…

android 环绕布局,Android自定义View实现圆形环绕效果

之前项目中需要实现一个四周环绕中心圆形头像的效果&#xff0c;感觉还是自定义比较方便&#xff0c;于是就自己封装了一个控件去实现。先贴张图显示最终效果。首先自定义一个View继承自LinearLayout,通过动态添加childView的方式将子控件添加到View中。思路是先添加中间圆形头…

android tasker,Tasker:Android系统增强神器

权限信息 net.dinglisch.android.tasker.PERMISSION_RUN_TASKS net.dinglisch.android.tasker.PERMISSION_AUTO_IMPORT com.joaomgcd.taskersettings.SET_SETTING net.dinglisch.android.zoom.permission.MAKE_CHANGES android.permission.PACKAGE_USAGE_STATS cyanogenmod.per…

android 高德地图 sh1,百度、高德地图获取发布版(Release)SHA1

一、简介&#xff1a;在百度、高德地图开发中&#xff0c;申请key的时候&#xff0c;要两个版本的sha1值。一个是开发版(debug)&#xff0c;一个是发布版(release)。debug版本的sha1比较好获取&#xff0c;网上资料一堆&#xff0c;这里引用一下&#xff0c;就不再重复写了。最…

signature=adf15bd90b83b628c647a1aa64741773,Thoracic Oncology

摘要&#xff1a;Thymic malignancies are rare epithelial tumors that may be aggressive and difficult totreat. Thymomas are usually localized to the anterior mediastinum and are frequentlyeligible for upfront surgical resection. However, nearly 30% of patien…

html前台检验特殊字符正则,【Qt编程】html特殊字符及正则表达式

1、html特殊字符的显示我们知道html语言和C语言一样也有一些特殊字符&#xff0c;它们是不能正常显示的&#xff0c;必须经过转义&#xff0c;在网上可以查到如何显示这些字符&#xff0c;如下图所示&#xff1a;上图给了最常用的特殊字符的显示&#xff0c;下面我们来实验一下…

html 变量类型强制转换,html、js前台数据传到后台,spring复杂类型转换

html、js前台数据传到后台&#xff0c;spring复杂类型转换如果我有两个变量&#xff0c;变量名不一样&#xff0c;处理的规则也不一样&#xff0c;但是他们都是Date.class 类型&#xff0c; 这可怎么破。比如&#xff1a;InitBinderpublic void bindingPreparation(WebDataBind…