lvs持久连接及防火墙标记实现多端口绑定服务
lvs持久连接及防火墙标记实现多端口绑定服务
LVS持久连接:
PCC:将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS;
PPC:将来自于一个客户端发往某VIP的某端口的所有请求统统定向至同一个RS;
PFMC: 端口绑定,port affinity
基于防火墙标记,将两个或以上的端口绑定为同一个服务
一、安装ipvs环境
具体请参考博文 LVS负载均衡器DR模型的实现(http://blog.csdn.net/reblue520/article/details/50857078)
普通的非持久连接配置:
# ipvsadm -A -t 192.168.8.40:80 -s rr
# ipvsadm -a -t 192.168.8.40:80 -r 192.168.8.101 -g
# ipvsadm -a -t 192.168.8.40:80 -r 192.168.8.102 -g
持久连接配置:
添加一个访问80端口的持久连接,发现此时同一个IP访问80端口,都转发给同一个RS响应,同理22号端口的ssh服务也可以类似配置
# ipvsadm -A -t 192.168.8.40:80 -s rr -p 600
# ipvsadm -a -t 192.168.8.40:80 -r 192.168.8.101 -g
# ipvsadm -a -t 192.168.8.40:80 -r 192.168.8.102 -g
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.8.40:80 rr persistent 600
-> 192.168.8.101:80 Route 1 0 0
-> 192.168.8.102:80 Route 1 0 0
清空此前的配置
# ipvsadm -C
在600秒以内,来自同一个客户端的请求都转发到同一个RS(192.168.8.40:0 表示任意端口)
# ipvsadm -A -t 192.168.8.40:0 -s rr -p 600
# ipvsadm -a -t 192.168.8.40:0 -r 192.168.8.101 -g
# ipvsadm -a -t 192.168.8.40:0 -r 192.168.8.102 -g
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.8.40:0 rr persistent 600
-> 192.168.8.101:0 Route 1 0 0
-> 192.168.8.102:0 Route 1 0 0
此时可以观察到,通过同一台客户端不管是访问ssh还是web服务都指向了同一个RS的IP
二、安装httpd服务
apache服务可以通过手动编译安装也可以通过yum自动安装,安装过程略
1.配置https服务
DR做CA服务器
在rs上安装ssl服务(通过yum默认安装的配置方法)
# yum install -y mod_ssl
2.DR 192.168.8.100配置
# cd /etc/pki/CA
# vim ../tls/openssl.cnf
countryName_default = CN
stateOrProvinceName_default = GD
localityName_default = shenzhen
0.organizationName_default = chinasoft
organizationalUnitName_default = linuxop
# (umask 077; openssl genrsa 2048 > private/cakey.pem)
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655
# touch index.txt serial crlnumber
# echo 01 > serial
3.RS上的操作
# cd /etc/httpd
# mkdir ssl
# cd ssl
# (umask 077; openssl genrsa 1024 > httpd.key)
# openssl req -new -key httpd.key -out httpd.csr
# scp httpd.csr 192.168.8.100:/tmp
4.DR 192.168.8.100配置
# openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt
# scp /tmp/httpd.crt 192.168.8.101:/etc/httpd/ssl
回到rs1 192.168.8.101
在rs2 192.168.8.102上创建目录 # mkdir /etc/httpd/ssl
将生成的证书和key拷贝到8.102上
# scp httpd.crt httpd.key 172.16.100.12:/etc/httpd/ssl/
# vim /etc/httpd/conf.d/ssl.conf
DocumentRoot "/var/www/html"
ServerName www.chinasoft.com:443
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
# scp conf.d/ssl.conf 192.168.8.102:/etc/httpd/conf.d/
5.192.168.8.101 因为是自己编译安装的apache服务,需要单独配置
编译安装时的配置参数
/configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable--ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modeles=most --enable-mpms-shared=all --with-mpm=event
可以看到--enable--ssl 这个选项,说明是安装了ssl模块的,需要手动开启该配置
①加载ssl模块
# vim /etc/httpd/httpd.conf
LoadModule ssl_module modules/mod_ssl.so
Include /etc/httpd/extra/httpd-ssl.conf
②配置httpd的key及认证文件目录
vim /etc/httpd/extra/httpd0ssl.conf
SSLCertificateFile "/etc/httpd/ssl/httpd.crt"
SSLCertificateKeyFile "/etc/httpd/ssl/httpd.key"
重启httpd服务,报错
停止 httpd: [失败]
正在启动 httpd:AH00526: Syntax error on line 48 of /etc/httpd/extra/httpd-ssl.conf:
Invalid command 'SSLCipherSuite', perhaps misspelled or defined by a module not included in the server configuration
需要加载mod_socache_shmcb模块
vim /etc/httpd/httpd.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
通过访问各自服务器的https可以看到已经生效
三、配置基于https服务的持久连接
# ipvsadm -A -t 192.168.8.40:443 -s rr
# ipvsadm -a -t 192.168.8.40:443 -r 192.168.8.101 -g
# ipvsadm -a -t 192.168.8.40:443 -r 192.168.8.102 -g
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.8.40:443 rr
-> 192.168.8.101:443 Route 1 0 12
-> 192.168.8.102:443 Route 1 0 6
基于防火墙标记实现多端口绑定http和https服务,同时也做到了负载均衡
# iptables -t mangle -A PREROUTING -d 192.168.8.40 -p tcp --dport 80 -j MARK --set-mark 10
# iptables -t mangle -A PREROUTING -d 192.168.8.40 -p tcp --dport 443 -j MARK --set-mark 10
# service iptables save
# ipvsadm -A -f 10 -s rr
# ipvsadm -a -f 10 -r 192.168.8.101 -g
# ipvsadm -a -f 10 -r 192.168.8.102 -g
lvs持久连接及防火墙标记实现多端口绑定服务的更多相关文章
- LVS持久连接
LVS持久连接 源地址HASH ipvs的连接模板 可以通过ipvsadm -L -c 持久连接持久客户端连接 PCC:在固定时间内将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS0表示所 ...
- LVS(五)LVS的持久连接
什么是持久链接 把某个客户端的请求始终定向到同一应用服务器上.对于LVS来说持久连接和算法没有关系.也就是使用任何算法LVS都可以实现同一客户端的请求转发到之前选定的应用服务器,以保持会话.而且还能实 ...
- LVS之NAT模型、DR模型配置和持久连接
前言:继LVS概述,本篇实现NAT模型和DR模型下的负载均衡. NAT模型: LVS-NAT基于cisco的LocalDirector.VS/NAT不需要在RealServer上做任何设置,其只要能提 ...
- 【转】LVS负载均衡之session解决方案 持久连接
原文地址:http://minux.blog.51cto.com/8994862/1744761 1. 持久连接是什么? 1.1 在LVS中,持久连接是为了用来保证当来自同一个用户的请求时能够定位到同 ...
- LVS的持久连接、会话保持和高可用介绍
持续连接 1)持久连接(lvs persistence)模板: 实现无论使用任何调度算法,在一段时间内(默认360s),能够实现将来自同一个地址的请求始终发往同一个RS ipvsadm -A|E -t ...
- LVSDR模型与持久连接
LVS之DR模型以及持久连接 LVS的简单介绍 linux virtual server 简单来讲lvs是一段内核代码 类似于netfilter本身是一框架但不提供任何功能,但是在这框架上提供了能够根 ...
- WebSocket 是什么原理?为什么可以实现持久连接?
https://www.zhihu.com/question/20215561 作者:Ovear链接:https://www.zhihu.com/question/20215561/answer/ ...
- 负载均衡集群之LVS持久链接
原理--> 通过构建一个hash表,利用CIP与RS的对应关系,来保持来自一个CIP的各种服务都走同一个RS 目的--> 保持持久链接的同时,将多个服务合并起来,例如http和https ...
- Http持久连接与HttpClient连接池
一.背景 HTTP协议是无状态的协议,即每一次请求都是互相独立的.因此它的最初实现是,每一个http请求都会打开一个tcp socket连接,当交互完毕后会关闭这个连接. HTTP协议是全双工的协议, ...
随机推荐
- Service 启动Activity
1, 在BroadcastReceiver中启动Activity的问题 * * 如果在BroadcastReceiver的onReceive()方法中如下启动一个Activity * Inten ...
- Memcached在Windows下的配置和使用
Memcached学习笔记---- 安装和配置 首先,下载Memcached相关文件. 打开控制台,进入Memcached主程序目录,输入: memcached.exe -d install //安装 ...
- 框架&样式表
框架 <frameset rows上下拆分,cols左右拆分><fram src选择文件></frameset>. 样式表:“div style”写在body内 ...
- P1382 楼房 set用法小结
这个sb题目,剧毒... STL大法好 首先,我准备用经典的线段树优化扫描线来做.之前的矩形周长把我困了数天导致我胸有成竹. 然后,敲代码半小时,调试半个月......这个,sb,怎么改都是0分+2个 ...
- 【POJ1151】Atlantis
题目大意:给定 N 个矩形,求这些矩形的面积并. 题解:采用扫描线算法. 首先,按照矩形的横坐标排序,在纵坐标方向上维护一根扫描线被覆盖的长度,在这里采用线段树维护.统计答案时,从左到右扫描 2N 个 ...
- babel的使用及babel与gulp结合工作流
Babel 通过语法转换器支持最新版本的 JavaScript . 它有非常多的插件,这些插件能够允许我们立刻使用新语法,无需等待浏览器支持. 那我们怎么使用babel呢? 首先我们来了解babel基 ...
- 斯坦福大学公开课机器学习:梯度下降运算的学习率a(gradient descent in practice 2:learning rate alpha)
本章节主要讲怎么确定梯度下降的工作是正确的,第二是怎么选择学习率α,如下图所示: 上图显示的是梯度下降算法迭代过程中的代价函数j(θ)的值,横轴是迭代步数,纵轴是j(θ)的值 如果梯度算法正常工作,那 ...
- 选择监听事件ItemListener(是否被选择)
[界面说明] 下拉列表框,选谁谁显示.复选框与单选按钮,输出被选与否的状态.知识点主要代码为: int state = e.getStateChange(); ItemEvent.SELECTED I ...
- shiro中自定义realm实现md5散列算法加密的模拟
shiro中自定义realm实现md5散列算法加密的模拟.首先:我这里是做了一下shiro 自定义realm散列模拟,并没有真正链接数据库,因为那样东西就更多了,相信学到shiro的人对连接数据库的一 ...
- npm脚本
在package.json的script里面我们可以写很多npm脚本,下面我来总结一下一些日常遇到的知识点: 1.npm_lifecycle_event npm 提供一个npm_lifecycle_e ...