LVS(注意iptables和selinux的问题)
1.LVS(高负载)
LVS(Linux虚拟服务器)
Linux Virtual Server
LVS集群采用IP负载均和技术和基于内容请求分发技术。调取器具有很好的吞吐率,将请求均衡的转移到不同的服务器执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能,高可用的虚拟服务器
原理详解
http://junwang.blog.51cto.com/5050337/1439428/
1.查看内核是否支持ipvs
grep -i 'vs' /boot/config-3.17.-.fc21.i686+PAE
grep -i 'vs' /boot/config-3.17.-.fc21.i686
2.安装ipvsadm
yum install ipvsadm
3.ipvsadm命令
1、管理集群服务
1.添加:-Aipvsadm -A|E -t|u|f service-address
-t:tcp协议集群 -u:udp协议集群 -f:防火墙标记集群
2.修改:-E
3.删除:-D ipvsadm -D -t|u|f service-address
2、管理集群服务中的RealServer
1.添加:-aipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
-r:RS的地址,NAT模型中,可用IP:PORT实现端口映射
-g:DR模型 -i:TUN模型 -m:NAT模型 -w:权重
2.修改:-e
3.删除:-d ipvsadm -d -t|u|f service-address -r server-address
3.管理集群服务的查看
1.ipvsadm -L|l [options]
options:-n:数字格式显示
--stats 统计信息
--rate:统计速率
--timeout:显示tcp、tcpinfo、udp的会话超时时长
-c:连接客户端数量
4.情况计数器:ipvsadm -Z [-t|u|f service-address]
5.情况规则:ipvsadm –C
6.保存规则:
1.ipvsadm -S > /path/to/somefile
2.ipvsadm-save > /path/to/somefile
3.ipvsadm-restore < /path/to/somefile
4.lvs调度算法:
1. 固定调度
i. rr:轮询
ii. wrr:加权轮询
iii. sh:source hash,源地址hash(一定时间内,相同的源地址发往相同的主机)session affinity、 session sharing
iv. dh:对于同一个请求,发往同一个服务器(缓存服务器)
2. 动态调度(默认为wlc)
i. lc(least-connection)最少连接
1) active*256+inactive 谁的小,挑选谁
ii. wlc:加权最少连接
1) (active*256+inactive)/weight 谁的小,挑选谁
iii. sed:最短期望延迟
1) (active+1)*256/weight 谁的小,挑选谁
iv. nq:never queue(基于sed,不考虑incative)
v. lblc(locality-based least-connection)基于本地的最少连接
vi. lblcr:基于本地的带复制功能的最少连接(缓存共享对象,兄弟服务器)
尽可能调度到相同的服务器,只有新请求发送到最少的服务器,没有的话会去查询兄弟服务器
5.LVS之 DR模型
DR模型原理
当客户端访问集群中的服务(例如web),源IP(定义为A)和目标IP(定义为B)如上图所示,发送数据报文到调度器上
<1>客户端发送报文必须到调度器上,不能到Rearserver上,不然无法实现调度
实现原理:虽然RS上的lo口也配置VIP,但是却无法响应,通过如下配置在RS上实现
echo >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo >/proc/sys/net/ipv4/conf/lo/arp_announce
echo >/proc/sys/net/ipv4/conf/all/arp_ignore
echo >/proc/sys/net/ipv4/conf/all/arp_announce
arp_ignore(接受到arp请求时的响应级别,默认0)
1) 0:只要本地配置有相应的地址,给予响应
2) 1:仅在请求的目标地址配置请求到达的接口上的时候,才给于响应
arp_announce(将自己地址向外通告时的通告级别,默认0)
1) 0:将本地任何接口上的任何地址向外通告
2) 1:试图仅向目标网络通告语气网络匹配的地址
3) 2:仅向与本地接口上地址匹配的网络进行通告
2.调度器收到报文后查询ipvsadm规则,符合集群服务后发送报文到RS上,源目IP地址不变,是通过修改MAC地址发送到RS上的,
<1>调度器规则
ipvsadm -A -t 192.168.11.100: -s wrr
ipvsadm -a -t 192.168.11.100: -r 192.168.11.12 -g -w
ipvsadm -a -t 192.168.11.100: -r 192.168.11.13 -g -w
RS收到报文后,发现目标IP为自己的VIP(lo:0上配置,不对外响应,只做回报的源IP),用自己的VIP作为源地址发送报文
<1>如何实现发送报文时,源IP为自己的lo:0上的VIP,默认linux报文从哪个接口出源IP为那个接口
实现原理:
ifconfig lo: 192.168.11.100 netmask 255.255.255.255 up (配置RS的VIP,不对外响应) route add -h 192.168.11.100 dev lo: (增加路由,报文目标IP为192.168.11.100的接口为lo:,这样回报也是通过lo:0回报,确保报文源IP为VIP)
<2>确保调度器上的发包正确,增加如下配置
ifconfig eth: 192.168.11.100 netmask 255.255.255.255 up (添加VIP地址)
route add -h 192.168.11.100 dev eth:
客户端收到后源IP为VIP,目的IP为客户端的IP,报文的封装为:RS通过自己的lo:0回应报文,源IP则为VIP,目标IP则为客户端IP
DR模型实现脚本
DR类型中,Director和RealServer的配置脚本示例:
Director脚本:
#!/bin/bash
#
# LVS script for VS/DR
# chkconfig: -
#
. /etc/rc.d/init.d/functions
#
VIP=192.168.11.100
DIP=192.168.11.11
RIP1=192.168.11.12
RIP2=192.168.11.13
PORT=
RSWEIGHT1=
RSWEIGHT2=
#
case "$1" in
start)
/sbin/ifconfig eth0: $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:
# Since this is the Director we must be able to forward packets
echo > /proc/sys/net/ipv4/ip_forward
# Clear all iptables rules.
/sbin/iptables -F
# Reset iptables counters.
/sbin/iptables -Z
# Clear all ipvsadm rules/services.
/sbin/ipvsadm -C
# Add an IP virtual service for VIP 192.168.0.219 port
# In this recipe, we will use the round-robin scheduling method.
# In production, however, you should use a weighted, dynamic scheduling method.
/sbin/ipvsadm -A -t $VIP: -s wrr
# Now direct packets for this VIP to
# the real server IP (RIP) inside the cluster
/sbin/ipvsadm -a -t $VIP: -r $RIP1 -g -w $RSWEIGHT1
/sbin/ipvsadm -a -t $VIP: -r $RIP2 -g -w $RSWEIGHT2
/bin/touch /var/lock/subsys/ipvsadm &> /dev/null
;;
stop)
# Stop forwarding packets
echo > /proc/sys/net/ipv4/ip_forward
# Reset ipvsadm
/sbin/ipvsadm -C
# Bring down the VIP interface
/sbin/ifconfig eth0: down
/sbin/route del $VIP /bin/rm -f /var/lock/subsys/ipvsadm echo "ipvs is stopped..."
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ]; then
echo "ipvsadm is stopped ..."
else
echo "ipvs is running ..."
ipvsadm -L -n
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
;;
esac
RealServer脚本:
#!/bin/bash
#
# Script to start LVS DR real server.
# chkconfig: -
# description: LVS DR real server
#
. /etc/rc.d/init.d/functions
VIP=192.168.11.100
host=`/bin/hostname`
case "$1" in
start)
# Start LVS-DR real server on this machine.
/sbin/ifconfig lo down
/sbin/ifconfig lo up
echo > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo > /proc/sys/net/ipv4/conf/lo/arp_announce
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ifconfig lo: $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:
;;
stop)
# Stop LVS-DR real server loopback device(s).
/sbin/ifconfig lo: down
echo > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo > /proc/sys/net/ipv4/conf/lo/arp_announce
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_announce
;;
status)
# Status of LVS-DR real server.
islothere=`/sbin/ifconfig lo: | grep $VIP`
isrothere=`netstat -rn | grep "lo:0" | grep $VIP`
if [ ! "$islothere" -o ! "isrothere" ];then
# Either the route or the lo: device
# not found.
echo "LVS-DR real server Stopped."
else
echo "LVS-DR real server Running."
fi
;;
*)
# Invalid entry.
echo "$0: Usage: $0 {start|status|stop}"
exit
;;
esac
LVS(注意iptables和selinux的问题)的更多相关文章
- 关闭Linux中的iptables,firewalld,SELINUX
firewalld 停止firewalld服务 [root@VM_0_13_centos var]# systemctl stop firewalld 或 [root@VM_0_13_centos v ...
- iptables与SELinux
iptables: 开始配置我们来配置一个filter表的防火墙.(1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L Chain INPUT (policy ...
- 关闭Linux防火墙(iptables) 及 SELinux
一.关闭防火墙 1.重启后永久性生效: 开启:chkconfig iptables on 关闭:chkconfig iptables off 2.即时生效,重启后失效: 开启:service ipta ...
- (转)关闭iptables和SELinux
1. 关闭SELinux setenforce 0 #临时关闭 编辑/etc/selinux/config,找到SELINUX 行修改成为:SELINUX=disabled: #永久关闭, ...
- Linux分区方式及关闭iptables和selinux的方式
分区方式一般有三种 第一种:数据不是很重要 /boot(系统的引导分区): 系统引导的信息/软件 系统的内核 200M swap( 交换分区): 为了避免系统内存用光了导致系统 宕机 如果系统内存 ...
- Linux关闭iptables以及selinux
1.查看iptables状态 /etc/init.d/iptables status # 方法1 service iptables status # 方法2 2.重启后永久生效 chkconfig i ...
- CentOS 7.0如何安装配置iptables和seLinux以及firewalld
一.配置防火墙,开启80端口.3306端口 CentOS .0默认使用的是firewall作为防火墙,这里改为iptables防火墙. .关闭firewall: systemctl stop fire ...
- centos 防火墙 iptables firewalld SELinux
参考 Centos7 只启用iptables 禁用firewalld功能 java.net.NoRouteToHostException: 没有到主机的路由 相关内容 centos7 中才开始引用fi ...
- Mysql+Mycat+NFS+Rsync+LVS+DNS+IPtables综合实验
1.环境准备 服务器 IP地址 作用 系统版本 Mysql-master eth0:10.0.0.58 主数据库 Rocky8.6 Mysql-slave1 eth0:10.0.0.68 备数据库 R ...
随机推荐
- goweb-会话控制
会话控制 HTTP 是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不 能区分中两次请求是否由一个客户端发出.这样的设计严重阻碍的 Web 程序的设计. 如:在我们进行网购时,买了一条裤子 ...
- 为什么Web前端变的越来越复杂,变得更加难学了
前端发展了也有些年头了,曾记得很多年前,聊起前端,都觉得是很简单,那个时候都没有前端工程师这个职位.可现在,前端已经逆袭了,已经不是原来的样子了,各种技术层出不穷,显的越来越高深莫测了.前端真的变得那 ...
- Ambiguous HTTP method Actions require an explicit HttpMethod binding for Swagger 2.0 异常
网上看了很多关于此异常的解决方案,但是大多数都是不能用的,今天把正确的解决方案记录下来,以帮助需要的人 问题:有些接口没有设置HttpPost或HttpGet,非接口设置访问权限为private,控制 ...
- 关于Java自动拆箱装箱中的缓存问题
package cn.zhang.test; /** * 测试自动装箱拆箱 * 自动装箱:基本类型自动转为包装类对象 * 自动拆箱:包装类对象自动转化为基本数据类型 * * * /*缓存问题*/ /* ...
- 前端快速构建神器vue-cli,windows下安装并且构建前端项目
1.nodejs官网http://nodejs.cn/下载安装包,傻瓜式安装即可 2.dos命令查询node的版本 node -v 查询版本号 npm -v 查询npm包管理版本 3.安装国内镜像 n ...
- C++对象的动态建立与释放
new运算符动态分配堆内存 (从堆分配一块“类型”大小的存储空间,并且返回首地址) 1.写程序的时候,经常需要动态的分配和撤销内存空间,C语言中常常是利用库函数 malloc 和 free 来分配和 ...
- linux mysql备份数据库
$ mysqldump -u root -p 数据库名称 > beifen.sql 恢复 source beifen.sql
- UI Automation编程辅助工具Inspect的下载和使用
UIAutomation微软提供的UI自动化库,主要用AutomationElement类来表示UI 自动化目录树中的一个UI自动化元素,.NET Windows的窗体应用程序和WPF应用程序. In ...
- Vue2--非父子组件通信笔记
核心要点: var Event=new Vue(); Event.$emit(事件名称, 数据) Event.$on(事件名称,function(data){ //data }.bind(this)) ...
- HTML5之FileReader小结
方法: 方法名 参数 描述 abort none 中断读取 readAsBinaryString file 将文件读取为二进制码 readAsDataURL file 将文件读取为 DataURL r ...