zoukankan      html  css  js  c++  java
  • Haproxy+ssl+nvm+forever

     1 nvm介绍

    • NVM(Node version manager)顾名思义,就是Node.js的版本管理软件,可以轻松的在Node.js各个版本间切换,项目源码在GitHub;
    #安装git客户端
    [root@node-v1 ~]# yum install git-core -y
    [root@node-v1 ~]# cd /usr/local/src/
    [root@node-v1 src]# git clone https://github.com/cnpm/nvm.git
    [root@node-v1 src]# cd nvm/
    [root@node-v1 nvm]# ./install.sh 
    [root@node-v1 nvm]# source nvm.sh
    [root@node-v1 nvm]# nvm install 8
    ######################################################################## 100.0%
    WARNING: checksums are currently disabled for node.js v4.0 and later
    Now using node v8.9.4 (npm v5.6.0)
    [root@node-v1 bin]# echo "export PATH=/usr/local/src/nvm/versions/node/v8.9.4/bin:$PATH" >> /etc/profile 
    [root@node-v2 .nvm]# cat >>/etc/profile<<EOF
    > export NVM_DIR="/usr/local/src/nvm"
    > [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
    > EOF
    • 使用方法
    1. 列出所有可安装的版本nvm list-remote;  
    2. 安装相应的版本使用nvm install 8;还可以直接安装 各个版本;
    3. 查看一下你当前已经安装的版本:nvm ls;
    4. 切换版本;nvm use v0.12.4;
    5. 设置默认版本 nvm alias default v0.12.4
    6. 注意:具体操作很简单,使用帮助通过nvm help;

    1.1 编写hello.js试验

    [root@node-v1 ~]# cat hello.js 
    var http = require('http');
     
    var server = http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type' : 'text/html'});
    res.write('<head><meta charset="utf-8"/></head>');
    res.end("Hello world node-v1");
    });
     
    server.listen(3000, '10.0.0.7');
    

    • node-v2也是如此

    1.2 安装forever让node永久运行

    [root@node-v1 ~]# npm install forever -g
    [root@node-v1 ~]# forever start hello.js 
    [root@node-v1 ~]# forever stop hello.js 

    2 安装Haproxy

    [root@haproxy ~]# yum install -y haproxy
    [root@haproxy ~]# cp /etc/haproxy/haproxy.cfg{,.bak} 

    2.1 Haproxy开启日志记录

    [root@haproxy ~]# mkdir /var/log/haproxy
    [root@haproxy ~]# chmod a+w /var/log/haproxy
    [root@haproxy ~]# egrep -v "#|^$" /etc/rsyslog.conf
    $ModLoad imudp
    $UDPServerRun 514
    $WorkDirectory /var/lib/rsyslog
    $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
    $IncludeConfig /etc/rsyslog.d/*.conf
    $OmitLocalLogging on
    $IMJournalStateFile imjournal.state
    *.info;mail.none;authpriv.none;cron.none                /var/log/messages
    authpriv.*                                              /var/log/secure
    mail.*                                                  -/var/log/maillog
    cron.*                                                  /var/log/cron
    *.emerg                                                 :omusrmsg:*
    uucp,news.crit                                          /var/log/spooler
    local7.*                                                /var/log/boot.log
    

    2.2 修改“/etc/sysconfig/rsyslog”文件,内容如下  

    [root@haproxy ~]# cat /etc/sysconfig/rsyslog
    # Options for rsyslogd
    # Syslogd options are deprecated since rsyslog v3.
    # If you want to use them, switch to compatibility mode 2 by "-c 2"
    # See rsyslogd(8) for more details
    SYSLOGD_OPTIONS="-r -m 0 -c 2"
    

    2.3 修改Haproxy的配置文件如下:

    [root@haproxy ~]# cat /etc/haproxy/haproxy.cfg
    global
        log         127.0.0.1 local0  info  #定义全局syslog服务,127.0.0.1表示将日志发送到本地保存
        chroot      /var/lib/haproxy       
        pidfile     /var/run/haproxy.pid      
        maxconn     25600              #最大连接数                      
        user        haproxy            #用户名
        group       haproxy            #组
        daemon                         #以守护进程方式运行
        stats socket /var/lib/haproxy/stats     # turn on stats unix socket
    
    defaults                                         #为frontend和backend提供默认参数
        mode                    http                 #模式
        log                     global               #日志            
        option  httplog                              #详细记录http日志
        option  dontlognull                          #不记录健康检查的日志信息
        retries 3                                    #3次连接失败则认为服务不可用
        option  redispatch                           #ServerID对应的服务器宕机后,强制定向到其他运行正常的服务器
        maxconn 30000                                #默认的最大连接数
        contimeout  5000                             #连接超时
        clitimeout  5000                            #客户端超时
        srvtimeout  5000                             #服务器超时
        timeout check   1s                           #心跳检测超时
        timeout http-request    10s                  #默认http请求超时时间
        timeout queue           1m                   #默认队列超时时间
        timeout connect         10s                  #默认连接超时时间
        timeout client          1m                   #默认客户端超时时间
        timeout server          1m                   #默认服务器超时时间
        timeout http-keep-alive 10s                  #默认持久连接超时时间
    
    listen  stats
        mode http
        bind 0.0.0.0:8090                            #指定IP地址与Port
        stats enable                                 #开启Haproxy统计状态
        stats refresh 3s                             #统计页面自动刷新时间间隔
        stats hide-version                           #状态页面不显示版本号
        stats uri   /haproxyadmin?stats              #统计页面的uri为"/haproxyadmin?stats"
        stats realm Haproxy Statistics              #统计页面认证时提示内容信息
        stats auth  admin:admin                      #统计页面的用户名与密码
        stats admin if TRUE                          #启用或禁用状态页面
    
    frontend node                                   #定义前端服务器
        bind *:80
        mode http
        option httpclose                             #每次请求完成主动关闭http连接
        option forwardfor                            #后端服务器获取客户端的IP地址,可以从http header中获取
        acl url_static path_end -i .html .jpg .gif   #定义ACL规则以如".html"结尾的文件;-i:忽略大小写
        acl url_dynamic path_end -i .php
        default_backend node-web                     #客户端访问时默认调用后端服务器地址池
    backend node-web                                 #定义后端服务器
        balance roundrobin                           #定义算法;基于权重进行轮询
        server node1 10.0.0.7:3000 check rise 2 fall 1 weight 2
        server node2 10.0.0.8:3000 check rise 2 fall 1 weight 2
    •  访问

      

     

     3 配置 Haproxy+ssl

    3.1 Haproxy配置http跳转https

    [root@haproxy_v1 haproxy]# cat haproxy.cfg
    global
        log         127.0.0.1 local0  info  #定义全局syslog服务,127.0.0.1表示将日志发送到本地保存
        chroot      /var/lib/haproxy       
        pidfile     /var/run/haproxy.pid      
        maxconn     25600              #最大连接数                      
        user        haproxy            #用户名
        group       haproxy            #组
        daemon                         #以守护进程方式运行
        tune.ssl.default-dh-param 2048
        stats socket /var/lib/haproxy/stats     # turn on stats unix socket
    
    defaults                                         #为frontend和backend提供默认参数
        mode                    http                 #模式
        log                     global               #日志            
        option  httplog                              #详细记录http日志
        option  dontlognull                          #不记录健康检查的日志信息
        retries 3                                    #3次连接失败则认为服务不可用
        option  redispatch                           #ServerID对应的服务器宕机后,强制定向到其他运行正常的服务器
        maxconn 30000                                #默认的最大连接数
        #contimeout  5000                             #连接超时
        #clitimeout  5000                             #客户端超时
        #srvtimeout  5000                             #服务器超时
        timeout check   1s                           #心跳检测超时
        timeout http-request    10s                  #默认http请求超时时间
        timeout queue           1m                   #默认队列超时时间
        timeout connect         10s                  #默认连接超时时间
        timeout client          1m                   #默认客户端超时时间
        timeout server          1m                   #默认服务器超时时间
        timeout http-keep-alive 10s                  #默认持久连接超时时间
    
    listen  stats
        mode http
        bind 0.0.0.0:8090                            #指定IP地址与Port
        stats enable                                 #开启Haproxy统计状态
        stats refresh 3s                             #统计页面自动刷新时间间隔
        stats hide-version                           #状态页面不显示版本号
        stats uri   /haproxyadmin?stats              #统计页面的uri为"/haproxyadmin?stats"
        stats realm Haproxy Statistics              #统计页面认证时提示内容信息
        stats auth  admin:admin                      #统计页面的用户名与密码
        stats admin if TRUE                          #启用或禁用状态页面
    
    frontend node                                    #定义前端服务器
        bind *:80
        acl is_http hdr_beg(host) 10.0.0.60
        redirect scheme https if ! { ssl_fc }
        bind *:443 ssl crt /etc/haproxy/xiao.pem
        use_backend node-web if is_http
    
    backend node-web                                 #定义后端服务器
        balance roundrobin                           #定义算法;基于权重进行轮询
        server node1 10.0.0.7:3000 check rise 2 fall 1 weight 2
        server node2 10.0.0.8:3000 check rise 2 fall 1 weight 2
    
    • 证书的处理,需要将网站的根证书和key简单的合并在一起: 

    [root@haproxy_v1 haproxy]# pwd
    /etc/haproxy
    [root@haproxy_v1 haproxy]# ll
    total 16
    -rw-r--r-- 1 root root 3165 Jan  6 00:00 haproxy.cfg
    -rw-r--r-- 1 root root 3142 Jan  5 00:11 haproxy.cfg.bak
    -rw-r--r-- 1 root root 1675 Jan 17  2018 privatekey.pem
    -rw-r--r-- 1 root root 1184 Jan 17  2018 server.pem
    [root@haproxy_v1 haproxy]# cat server.pem privatekey.pem |tee xiao.pem
    

     访问10.0.0.60跳转到https://10.0.0.60

  • 相关阅读:
    Linux配置java环境
    三级联动的实现
    Linux安装
    省市区县的sql语句——城市
    shiro登陆权限验证
    省市区县的sql语句——区县
    Linux安装Jenkins
    省市区县的sql语句——省
    读《世界是数字的》有感
    读《我是一只IT小小鸟》有感
  • 原文地址:https://www.cnblogs.com/so-cool/p/8308793.html
Copyright © 2011-2022 走看看