两台nginx实现https负载均衡

  categories:资料  tags:, , ,   author:

现在网络完全越来越受到重视, 因此https也是大势所趋, 以往nginx都是工作在http方式下, 其实nginx在https下工作也挺好的。 这里将分步骤的逐步实现一套采用nginx, haproxy, keepalived实现的https系统, 并且系统没有单点故障, 基本适应中小系统的安全需要。

1. Nginx https安装    这个文章主要是安装支持https的nginx, 源代码装过程

2. https安装(2)nginx配置   继承上一个文章, 记录配置过程, 然后实现https服务

本文继承前两个文章, 记录通过nginx实现https的功能, 并且通过haproxy将两台nginx的https进行整合, 统一对外提供服务。

但是本文的方法, 在haproxy上仍然存在单点故障, 下一篇文章, 将修正这个错误

 

本文记录详细的安装过程, 供大家参考。

 一. 准备linux操作系统

本文的nginx和haproxy都是在linux下进行的安装与测试, 因此需要linux计算机。

我们采用vmware作为虚拟机软件, 采用下面的已经安装好的虚拟机镜像做为操作系统。 这样节省了安装时间。

链接:http://pan.baidu.com/s/1nutqTkP 密码:f4bh

  1. 安装好vmware软件, 这个百度上搜索, 或者参考:     虚拟机vmware新手使用教程
  1. 下载好虚拟机软件后解压缩到一个比较大的硬盘空间, 记录下目录地址
  2. 启动虚拟机软件, 在文件菜单中, 选择打开按钮, 然后选择好, 您刚才解压缩的文件目录, 选择其中*.vmx文件, 然后打开
  3. 选择运行这个软件, 最后您可以开始这个虚拟机了, 虚机运行后, 最后进入登录界面, 在登录界面中输入 root作为用户名, 密码为 thoughtpolice   或者root

或者查看README-vmware-image.txt 文件

  1. 进入虚拟机后, 使用 ifconfig命令, 检查一下 虚拟机是否网络已经正确启动, 并且查看一下, 这个虚拟机的ip地址
  2. 运行 setup命令, 进入防火墙选项 关闭防火墙
  3. 安装xshell软件, 在xshell软件里面配置一个连接到您虚拟机的连接, 然后连接上。这样方便后续的操作等
  4. 安装xftp软件  方便上传相关文件到服务器。

上述软件, 客户baidu搜索相关安装方法等。

二. nginx下https的安装和配置

  1. 安装https01服务器

本 文目标是测试多机负载均衡下https的工作状况, 因此我们需要安装至少2台nginx服务器, 并且每个服务器都要支持https协议, 因此我们需 要首先安装1台nginx, 然后在配置相关的https服务, 测试没问题了, 然后在站另外一台nginx, 最后安装负载均衡软件。

关于nginx的安装, https的安装, https的配置请参考下面的文章进行

Nginx https安装

https安装(2)nginx配置

参考上面文章, 安装配置完成nginx的https后, 进行测试一下, 配置文件为:

worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
  
    server {
        listen       80;
        server_name  test.iigrowing.cn;
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
    server {
        listen       443;
        server_name  test.iigrowing.cn;
        ssl                  on;
        ssl_certificate      /etc/pki/tls/certs/rsyslog.crt;
        ssl_certificate_key  /etc/pki/tls/certs/rsyslog.key;
        ssl_session_timeout  5m;
        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers   on;
        location / {
            root   html;
            index  index.html index.htm;
        }
   }  
}
  1. 测试https01服务器

进入下图目录中, 编辑hosts文件, 添加一行记录

192.168.128.138  test.iigrowing.cn

另外, 请用您的正确ip地址替换上面的ip地址, 用您喜欢的域名替换测试的域名。 这里用域名就是方便, 啥域名或者使用ip不影响您的测试结果。

haproxy001

  1. 启动一个浏览器, 在浏览器里面输入 https://test.iigrowing.cn

然后, 应该能看到 正确的显示了额,

您也可用修改nginx的html目录下的 index.html文件的内容, 来仔细测试您的工作成果。

 

  1. 关闭这个https01服务器, 然后在vmware的虚拟机菜单中选择

haproxy002

最后在弹出菜单中选择  链接克隆选项  这样可以节省点磁盘空间。 虚拟机名称可为 https02

  1. 克隆完毕启动这个新的虚拟机。

启动虚拟机后, 要先登录, 然后立即检查是否网络启动正常, 以及网络的ip地址, 若是网络不正常。

请运行setup命令

haproxy003

之后选择这个

haproxy005

haproxy006

haproxy007

填写下面的信息

haproxy008

最后选择 保存退出, 然后运行下面的命令, 检查新网卡是否启动正常了

service network restart              启动网卡(英文部分为命令)

Ifconfig                           检查网络是否正常启动

  1. 在xshell中配置一个新的连接, 用这个配置连接到新的虚拟机
  2. 进入/usr/local/nginx/sbin下, 运行./nginx 启动nginx, 然后测试这个https是否正常工作了。

 

到此我们准备好了,两个有https功能的nginx, 另外两个nginx的证书等信息都是完全一致的, 我们是采用虚拟机clone进行的。里面数据是一致的。

 

 三. 安装haproxy

关于haproxy的功能, 安装配置详情请参考下面的文章

Haproxy学习笔记-源码安装

这里简单进行安装配置, 然后进行配置

  1. 下载软件源代码 wget http://www.haproxy.org/download/1.6/src/haproxy-1.6.3.tar.gz

最后发现国外网站, 下载速度慢, 可以用本文提供的 下载好的版本

         haproxy-1.6.3.tar

  1. 下载本文提供的软件
  2. 启动xftp上传文件, 过程略
  3. 解压缩上传后的软件包
  4. 进入解压缩后的目录
  5. 运行make PREFIX=/usr/local/haproxy install  进行编译安装
  6. 最后执行 cd /usr/local/haproxy 目录
  7. 然后执行 mkdir conf  创建配置目录
  8. 进入文件目录, 执行vi haproxy.cfg  命令创建配置文件, 内容如下
global
    log 127.0.0.1 local0 info #[err warning info debug]
    maxconn 4096
    user root
    group root
    daemon
    nbproc 1
    pidfile /home/admin/haproxy/logs/haproxy.pid

defaults
    maxconn 2000
    contimeout 5000
    clitimeout 30000
    srvtimeout 30000

frontend https
    bind :443
    default_backend cluster_https

backend cluster_https
    mode tcp
    balance roundrobin
    server https01 192.168.128.136:443
    server https02 192.168.128.137:443

listen admin_stats
    bind 0.0.0.0:1080
    mode http
    log 127.0.0.1 local0 err
    stats uri /admin?stats
  1. 执行下面命令创建目录 mkdir -p  /home/admin/haproxy/logs/
  1. 执行  /usr/local/haproxy/sbin/haproxy  -f  /usr/local/haproxy/conf/haproxy.cfg
  2. 通过 netstat -ntlp  查看是否 启动了443端口
  3. 通过 http://test.iigrowing.cn:1080/admin?stats查看相关统计信息

haproxy009

 最后.  测试整个haproxy下的用nginx实现的https程序

  1. 登录https01服务器, 进入/usr/local/nginx/html 下  编辑html 修改内容, 添加些字符串 111111111111等, 这样方便我们了解到 我们访问的是https01机器
  2. 登录https02服务器, 进入/usr/local/nginx/html 下  编辑html 修改内容, 添加些字符串 222222222222等, 这样方便我们了解到 我们访问的是https01机器
  3. 启动firefox浏览器 输入 https://test.iigrowing.cn请确保协议时https, 另外域名解析到 haproxy的地址上。
  4. 在启动另外一个chrome浏览器, 然后同样输入上述的地址, 多次测试发现有时显示带 111有时显示带222的,测试基本正常

 

 

 



快乐成长 每天进步一点点