2019-06-031.集群介绍及haproxy安装

nginx和php一般开多进程提高处理能力
top输入之后按h是帮助

top

按1显示cpu核心
http://www.haproxy.org/

用lst长期 支持版本
[root@app1 ~]#yum list haproxy
haproxy.x86_64                                  1.5.18-8.el7                                  base  查看这个软件的版本
[root@app1 ~]#yum install haproxy -y   yum安装软件haproxy
查看按照帮助文档
下载软件
## yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools vim iotop bc zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate  下载编译安装需要的安装包


[root@byhaproxy ~]#cd /data/
[root@client data]#tar  xf haproxy-1.8.20.tar.gz 
[root@byhaproxy data]#cd haproxy-1.8.20
[root@byhaproxy data]#make ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 PREFIX=/usr/local/haproxy  
开始编译
[root@byhaproxy haproxy-1.8.20]#make install PREFIX=/usr/local/haproxy
开始安装

[root@byhaproxy data]#cat /etc/redhat-release   查看操作系统
CentOS Linux release 7.5.1804 (Core) 

  - linux2628   for Linux 2.6.28, 3.x, and above (enables splice and tproxy)
[root@byhaproxy data]#uname -a  查看内核版本
Linux byhaproxy 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@byhaproxy haproxy-1.8.20]#./haproxy -v   查看版本是否正确
HA-Proxy version 1.8.20 2019/04/25
Copyright 2000-2019 Willy Tarreau 

[root@byhaproxy haproxy-1.8.20]#./haproxy -h   查看启动参数
[root@byhaproxy haproxy-1.8.20]#./haproxy -vv shows known build options
  OPTIONS = USE_ZLIB=1 USE_CPU_AFFINITY=1 USE_OPENSSL=1 USE_SYSTEMD=1 USE_PCRE=1
   查看他的编译参数
[root@byhaproxy haproxy-1.8.20]#cp haproxy /usr/sbin/  把可执行程序,考到存放命令的目录里
[root@byhaproxy haproxy-1.8.20]#vim /usr/lib/systemd/system/haproxy.service    编辑启动脚本
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg  -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg  -p /run/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
[root@byhaproxy haproxy-1.8.20]#mkdir /etc/haproxy/   创建配置文件的目录
[root@byhaproxy haproxy-1.8.20]#find ./* -name *.cfg  搜索配置文件
[root@byhaproxy haproxy-1.8.20]#vim ./examples/option-http_proxy.cfg 
这个是示例的配置文件
[root@yum ~]#systemctl start haproxy
[root@yum ~]#ss -tnl
LISTEN     0      128                   *:5000                              *:*           查看
        
[root@yum ~]#ps -ef | grep haproxy   查看他的进程号
root       1822      1  0 08:28 ?        00:00:00 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
haproxy    1823   1822  0 08:28 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
haproxy    1824   1823  0 08:28 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
root       1836   1766  0 08:30 pts/0    00:00:00 grep --color=auto haproxy

这个就相当于串行的进程,父进程不一样他的内存空间也不一样
yum安装的和最新编译安装的启动脚本不一样的,配置文件的参数不支持

[root@byhaproxy haproxy-1.8.20]#vim /etc/haproxy/haproxy.cfg   修改配置文件

global
maxconn 100000
chroot /usr/local/haproxy
#stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
uid 99
gid 99
daemon
nbproc 2
cpu-map 1 0
cpu-map 2 1
#cpu-map 3 2
#cpu-map 4 3
pidfile /usr/local/haproxy/run/haproxy.pid
log 127.0.0.1 local3 info

defaults
option http-keep-alive
option  forwardfor
maxconn 100000
mode http
timeout connect 300000ms
timeout client  300000ms
timeout server  300000ms

listen stats
 mode http
 bind 0.0.0.0:9999
 stats enable
 log global
 stats uri     /haproxy-status
 stats auth    haadmin:q1w2e3r4ys
listen  web_port
 bind 0.0.0.0:80
 mode http
 log global
 server web1  127.0.0.1:8080  check inter 3000 fall 2 rise 5
[root@byhaproxy haproxy-1.8.20]#systemctl start haproxy启动服务
[root@byhaproxy haproxy-1.8.20]#ps -ef | grep haproxy   过滤进程
root       3031      1  0 08:38 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
nobody     3033   3031  0 08:38 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
nobody     3034   3031  0 08:38 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
root       3048   1875  0 08:39 pts/1    00:00:00 grep --color=auto haproxy
主进程3011  其他的nobody的父进程都是3011,这样他们就有共同的父进程,这个是进程的关系
[root@byhaproxy haproxy-1.8.20]#vim /etc/haproxy/haproxy.cfg
#nbproc 2
#cpu-map 1 0
#cpu-map 2 1
#cpu-map 3 2
#cpu-map 4 3
把这几个注释掉
[root@byhaproxy haproxy-1.8.20]#systemctl restart haproxy 
[root@byhaproxy haproxy-1.8.20]#ps -ef | grep haproxy  再次查看进程,这个就是多进程工作没有开,从进程编号可以看出来
root       3059      1  0 08:41 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
nobody     3061   3059  0 08:41 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
root       3065   1875  0 08:41 pts/1    00:00:00 grep --color=auto haproxy


listen  web_port
 bind 0.0.0.0:8080
 mode http
 log global
 server web1  127.0.0.1:8080  check inter 3000 fall 2 rise 5


frontend web
 bind 173.22.90.8:80   监听地址
use_backend web_host

backend web_host
  server web1 173.22.90.7:80   后端服务器地址
  server web2 173.22.90.10:80  后端服务器地址
[root@byhaproxy haproxy-1.8.20]#systemctl  restart haproxy
[root@byhaproxy haproxy-1.8.20]#ss -ntl  查看监听端口
LISTEN     0      128         173.22.90.8:80                                *:*                    监听本机ip地址的端口
[root@app2 yum.repos.d]#yum install httpd -y   安装HTTP的服务
[root@app1 ~]#cd /var/www/html/
[root@app2 html]#mkdir apps
[root@app2 html]#mkdir app1
[root@app1 html]#cd app1/
[root@app1 app1]#vim index.html    创建一个主页
173.22.90.7

[root@app1 app1]#systemctl start httpd

[root@byhaproxy haproxy-1.8.20]#vim /etc/haproxy/haproxy.cfg
 bind 173.22.90.8:80
use_backend web_host

backend web_host
  server web1 173.22.90.7:80
 # server web2 173.22.90.10:80    注释掉一个
[root@byhaproxy haproxy-1.8.20]#echo "alias hapr='systemctl  restart haproxy'" >>/etc/profile    定义重启别名
[root@byhaproxy haproxy-1.8.20]#source /etc/profile
出现apache的界面

访问页面的后端服务器
[root@nginxserver ~]#yum install httpd -y   安装http服务
[root@nginxserver ~]#cd /var/www/html/
[root@nginxserver html]#mkdir app2
[root@nginxserver html]#vim app2/index.html   编写页面
app2
[root@app2 html]# systemctl start httpd  启动服务
[root@byhaproxy haproxy-1.8.20]#vim /etc/haproxy/haproxy.cfg
  server web1 173.22.90.7:80
  server web2 173.22.90.11:80  取消注释
通过haproxy访问后端服务器的app2
image.png
[root@byhaproxy ~]#vim /etc/haproxy/haproxy.cfg 
#frontend web
# bind 173.22.90.8:80
#use_backend web_host

#backend web_host
#  server web1 173.22.90.7:80
 # server web2 173.22.90.11:80  
listen web   使用listen更方便,文字的行数少
 bind 173.22.90.8:80
server web1 173.22.90.11:80
[root@byhaproxy ~]#hapr
[root@byhaproxy ~]#ss -ntl
LISTEN     0      128         173.22.90.8:80                                *:*                    查看端口还在监听状态
查看访问的页面
maxconn 100000  可以接受最大连接数10万
chroot /usr/local/haproxy   锁定到这个目录里,防止别人取得haproxy权限去访问其他的目录

[root@byhaproxy haproxy]#id 99
uid=99(nobody) gid=99(nobody) groups=99(nobody)
[root@byhaproxy haproxy]#ps -ef | grep haproxy  使用的是nobody的用户运行的,这个是内部账户
root       4626      1  0 10:04 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
nobody     4628   4626  0 10:04 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
root       5044   4788  0 10:12 pts/1    00:00:00 grep --color=auto haproxy
[root@byhaproxy haproxy]#vim /etc/passwd
nobody:x:99:99:Nobody:/:/sbin/nologin  这个账户是nologin的bash环境的账户,或者在建一个账户把shell环境改成nobody就可以了
[root@byhaproxy haproxy]#useradd haproxy -s /sbin/nologin   创建账户并且指定bash类型
查看当前的id haproxy的号
uid=1000(haproxy) gid=1000(haproxy) groups=1000(haproxy)
[root@byhaproxy haproxy]#vim /etc/haproxy/haproxy.cfg 
uid 1000
gid 1000
[root@byhaproxy haproxy]#hapr
[root@byhaproxy haproxy]#ps -ef | grep haproxy   这个时候进程账户换了
root       5371      1  0 10:19 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
haproxy    5372   5371  0 10:19 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
root       5388   4788  0 10:19 pts/1    00:00:00 grep --color=auto haproxy

daemon就是以守护进程方式运行

[root@byhaproxy haproxy]#vim /etc/haproxy/haproxy.cfg 

nbproc 2
cpu-map 1 0  就是把haproxy的第一个进程绑定到第0个cpu核心上
cpu-map 2 1  就是把haproxy的第2个进程绑定到第1个cpu核心上
[root@byhaproxy haproxy]#cat /proc/cpuinfo 
查看cpu的核心
[root@byhaproxy ~]#yum install psmisc -y
[root@yum ~]#vim /etc/haproxy/haproxy.cfg
    nbthread    2    
[root@yum ~]#systemctl restart haproxy
[root@yum ~]#ps -ef | grep haproxy   报错没有起来
root       1596   1510  0 10:47 pts/0    00:00:00 grep --color=auto haproxy
[root@byhaproxy haproxy]#pstree -p 7016  查看主进程  ,主进程下边有线程
haproxy(7016)─┬─haproxy(7017)
              └─haproxy(7018)   

[root@yum ~]#vim /etc/haproxy/haproxy.cfg    开启多进程
    nbproc 2    
    cpu-map 1 0
    cpu-map 2 1
[root@yum ~]#systemctl restart haproxy
重启服务

你可能感兴趣的:(2019-06-031.集群介绍及haproxy安装)