设为首页 收藏本站
查看: 1125|回复: 0

[经验分享] LNMP+SSL+ LVS

[复制链接]

尚未签到

发表于 2019-1-2 13:32:13 | 显示全部楼层 |阅读模式
  LNMP+SSL+LVS-DR+ipvsadm+LVS Persistence实现同一种服务的不同端口定向到同一台realserver
说明:本实验是在VMware虚拟机中实现:
共需三个虚拟linux主机,三台虚拟linux主机的网卡模式都为桥接,
本文以web服务的httphttps为例
三台虚拟主机分别为:directorRS1RS2,其中RS1RS2realserver
director:     dip   eth0      172.16.22.1
vip   eth0:1   172.16.22.2
RS1         rip   eth0      172.16.22.10     网关:172.16.0.1
vip   lo:0      172.16.22.2       子网掩码:255.255.255.255
RS2         rip   eth0     172.16.22.11     网关:172.16.0.1
vip   lo:0      172.16.22.2       255.255.255.255
确保windows的防火墙以及虚拟机里的linux防火墙完全关闭
图示如下:

前提:RS1RS2已经搭建好LNMP平台,具体实施细节请看:
http://lihuan.blog.运维网.com/4391550/809395
这里不再赘述。
实现过程:
1.director上安装ipvsadm,开启转发功能并配置好ip地址


  • # grep –i  “vs” /boot/config-2.8.18-164.e15
  • # yum install ipvsadm –y
  • # rpm –ql ipvsadm
  • # sysctl –w net.ipv4.ip_forward=1
  • # setenforce=0
  • # ifconfig eth0 172.16.22.1 255.255.0.0
  • # ifconfig eth0:1 172.16.22.2 broadcast 172.16.22.2 netmask 255.255.255.255 up
  • # route –add –host 172.16.22.2 dev eth0:1


2.RS1上配置IParp规则:


  • # ifconfig eth0 172.16.22.10 255.255.0.0
  • # ifconfig lo down
  • # ifconfig lo up
  • # echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
  • # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  • # echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
  • # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  • # ifconfig lo:0 172.16.22.2 broadcast 172.16.22.2 netmask 255.255.255.255 up
  • # route add –host 172.16.22.2 dev lo:0
  • #echo
  • “rs1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111” > /var/www/html/index.html
  • # setenforce=0
  • # service httpd restart
  • # elinks -dump http://172.16.22.10


此时说明本机可以正常访问web服务了。
3.RS2上配置IParp规则:


  • # ifconfig eth0 172.16.22.11 255.255.0.0
  • # ifconfig lo down
  • # ifconfig lo up
  • # echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
  • # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  • # echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
  • # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  • # ifconfig lo:0 172.16.22.2 broadcast 172.16.22.2 netmask 255.255.255.255 up
  • # route add –host 172.16.22.2 dev lo:0
  • #echo
  • “rs2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222” > /var/www/html/index.html
  • # setenforce=0
  • # service httpd restart
  • # elinks -dump http://172.16.22.11


此时说明本机可以正常访问web服务了。
4.RS1RS2准备证书文件与私钥文件
(1).RS1上:
# cd /etc/pki/tls
# vim openssl.cnf
[ CA_default ]
dir           = ../../CA            # Where everything is kept
把上面”=../../CA”改为”=/etc/pki/CA”


  • # cd ..
  • # cd CA
  • # mkdir certs crl newcerts
  • # touch index.txt
  • # echo 01 > serial
  • # echo 01 > crlnumber
  • # (umask 077;openssl genrsa 2048 > private/cakey.pem)   #生成CA自己的私钥
  • # openssl req –new –x509 –key private/cakey.pem –out cacert.pem –days 3650

依次输入”CNHenanZZMTech   这是CA为自己签发证书


  • # mkdir /etc/nginx/ssl
  • # cd /etc/nginx/ssl
  • # (umask 077;openssl genrsa 1024 > nginx.key)   #生成nginx自己的私钥
  • # openssl req –new –key nginx.key –out nginx.csr

依次输入”CNHenanZZMTech   ,这是生成nginx的证书签发请求
# openssl ca –in nginx.csr –out nginx.crt  #CAnginx颁发证书
(2).RS2上:


  • # mkdir /etc/nginx/ssl
  • # cd /etc/nginx/ssl
  • # (umask 077;openssl genrsa 1024 > nginx.key)   #生成nginx自己的私钥
  • # openssl req –new –key nginx.key –out nginx.csr

依次输入”CNHenanZZMTech   ,这是生成nginx的证书签发请求
# scp nginx.csr root@172.16.22.10:/root  #此时需要输入RS1root用户的密码
RS2nginx的证书签发请求拷贝到RS1,RS1CA签发证书
RS1上:
# cd
# openssl ca –in nginx.csr –out nginx.crt  #CAnginx颁发证书
# scp nginx.crt root@172.16.22.11:/etc/nginx/ssl  #此时需要输入RS2root用户的密码
5.更改RS1RS2nginx配置文件,以支持https协议
RS1上:
# vim /etc/nginx/nginx.conf
修改:
# HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
#}为:
# HTTPS server
    #
    server {
        listen       443;
        server_name  www.lihuan.com;

        ssl                  on;
        ssl_certificate      cert.pem;
        ssl_certificate_key  cert.key;

        ssl_session_timeout  5m;

        ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers   on;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
说明:RS2上修改配置文件支持https协议的方法同RS1,这里不再赘述。

6.director上定义ipvsadm规则与持久防火墙标记,以实现同一个服务的不同端口定向到同一台realserver
# iptables –t mangle –A PREROUTING –i eth0 –p tcp –d 172.16.22.2 –dport 80 –j MARK –set-mark 20  
# iptables –t mangle –A PREROUTING –i eth0 –p tcp –d 172.16.22.2 –dport 443 –j MARK –set-mark 20  
# ipvsadm –A –f 20 –s wlc –p 2000
# ipvsadm –a –f 20 –r 172.16.22.10 –g –w 5
# ipvsadm –a –f 20 –r 172.16.22.11 –g –w 4
说明:上面几条语句中绿色的字体的范围可以是0-99的任意整数,此处选为20,一旦选为20,这几条语句必须都是用20才能保证同一服务的不同端口定向到同一台realserver

7.测试
前提:把RS1上的CA证书导入到windows物理机的浏览器中。
在浏览器输入:
http://172.16.22.2,出现:
然后再输入https://172.16.22.2,出现:

此时发现httphttps的结果是一样的,说明同一服务的的不同端口定向到
同一台realserver中(有可能是RS1或者RS2,这个是不确定的)




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-658682-1-1.html 上篇帖子: LVS 之 集群设计 下篇帖子: 简单实现LVS
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表