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持久连接及防火墙标记实现多端口绑定服务的更多相关文章

  1. LVS持久连接

    LVS持久连接 源地址HASH ipvs的连接模板 可以通过ipvsadm -L -c 持久连接持久客户端连接 PCC:在固定时间内将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS0表示所 ...

  2. LVS(五)LVS的持久连接

    什么是持久链接 把某个客户端的请求始终定向到同一应用服务器上.对于LVS来说持久连接和算法没有关系.也就是使用任何算法LVS都可以实现同一客户端的请求转发到之前选定的应用服务器,以保持会话.而且还能实 ...

  3. LVS之NAT模型、DR模型配置和持久连接

    前言:继LVS概述,本篇实现NAT模型和DR模型下的负载均衡. NAT模型: LVS-NAT基于cisco的LocalDirector.VS/NAT不需要在RealServer上做任何设置,其只要能提 ...

  4. 【转】LVS负载均衡之session解决方案 持久连接

    原文地址:http://minux.blog.51cto.com/8994862/1744761 1. 持久连接是什么? 1.1 在LVS中,持久连接是为了用来保证当来自同一个用户的请求时能够定位到同 ...

  5. LVS的持久连接、会话保持和高可用介绍

    持续连接 1)持久连接(lvs persistence)模板: 实现无论使用任何调度算法,在一段时间内(默认360s),能够实现将来自同一个地址的请求始终发往同一个RS ipvsadm -A|E -t ...

  6. LVSDR模型与持久连接

    LVS之DR模型以及持久连接 LVS的简单介绍 linux virtual server 简单来讲lvs是一段内核代码 类似于netfilter本身是一框架但不提供任何功能,但是在这框架上提供了能够根 ...

  7. WebSocket 是什么原理?为什么可以实现持久连接?

    https://www.zhihu.com/question/20215561   作者:Ovear链接:https://www.zhihu.com/question/20215561/answer/ ...

  8. 负载均衡集群之LVS持久链接

    原理--> 通过构建一个hash表,利用CIP与RS的对应关系,来保持来自一个CIP的各种服务都走同一个RS 目的--> 保持持久链接的同时,将多个服务合并起来,例如http和https ...

  9. Http持久连接与HttpClient连接池

    一.背景 HTTP协议是无状态的协议,即每一次请求都是互相独立的.因此它的最初实现是,每一个http请求都会打开一个tcp socket连接,当交互完毕后会关闭这个连接. HTTP协议是全双工的协议, ...

随机推荐

  1. centos6.5修改主机名

    centos 修改主机名 0.说明 系统安装后,系统默认的主机名称是localhost,现在想要修改为master.操作需要root权限. 1.方案一:仅当前登录有效,重启后失效 直接在命令行执行命令 ...

  2. P1186 玛丽卡 删边最短路最大值

    反正蛮水的一道题. 胡雨菲一句话让我的代码减少了10行还A了,之前的是个错的. 思路:先求出最短路,然后依次删去最短路上的每一条边,跑最短路求最大值. 关于删边:我的想法是当作链表删除,把last的n ...

  3. std::lock_guard和std::unique_lock

    std::unique_lock也可以提供自动加锁.解锁功能,比std::lock_guard更加灵活 https://www.cnblogs.com/xudong-bupt/p/9194394.ht ...

  4. MATLAB:图形加法运算(imadd函数)

    close all; %关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量 clear all; clc; I=imread('rice.png'); %读入图像rice,赋值给I J=im ...

  5. ztree更换节点图标

    首先需要注意一点,如果有研究过树形菜单,就会发现实现删除和修改功能特别简单,但是增加却有一点复杂.造成这个现象是ztree树形菜单的历史遗留问题.大概是之前的版本没有增加这个功能,后来的版本加上了这个 ...

  6. 类的初始化过程(难点)--------java基础总结

    前言:看到这么好的东西,忍不住又写到了博客上面 Student s = new Student();在内存中究竟做了哪些事情呢? ①加载student.class文件进内存. ②为栈内存s开辟空间. ...

  7. SVN的Windows和Linux客户端操作详解

    SVN的Windows和Linux客户端操作详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Windows客户端操作 1.安装SVN客户端 a>.去官网下载svn软件 ...

  8. python自动化运维之路~DAY4

    python自动化运维之路~DAY4   作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.模块导入方式详解. 关于Python有几种导入模块的方式,请参考我的另外一篇博客(第20 ...

  9. Log4net(三)——RollingFileAppender配置

    RollingFileAppender配置 log4net的记录介质很多,这里只总结最常用的方式之一:RollingFileAppender. 1.日志文件名是以文件大小进行变换的 如果日志文件大小到 ...

  10. .NET MVC中的防CSRF攻击

    一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSR ...