Webクラスターを構築するためのHaproxy + nginxの負荷分散---個人組織

1つは、Haproxy分析

  • Haproxyは、TCP(4層)およびHTTP(7層)アプリケーションに基づいて高可用性、負荷分散、およびプロキシを提供するソフトウェアです。
  • 高負荷のWebサイトに適しています
  • ハードウェアで実行すると、数万の同時接続要求をサポートできます

第二に、Haproxyのスケジューリングアルゴリズム

最も一般的に使用される3つ

  • RR(ラウンドロビン)は
    最も単純で最も一般的に使用されるアルゴリズム、つまりラウンドロビンスケジューリングであり、LVSのrrと同じ意味です。

(個人的には、2つのWebサーバーがある場合、2つのターンがあります!)

  • LC(最小接続)
    最小接続アルゴリズム。バックエンドノード接続の数に応じてフロントエンド要求を動的に割り当てます。

(たとえば、個人的な理解:大学の食堂の食品加工ウィンドウでは、各叔母がウィンドウの責任を負っています。人が多ければそれについては考えず、食べ物を作るために人が少ないウィンドウに戻るだけです。ウィンドウは混雑していません。どこに行きますか? !!!)

  • SH(ソースハッシュ)は
    、ソースアクセススケジューリングアルゴリズムに基づいており、セッションセッションがサーバー側で記録されるいくつかのシナリオで使用されます。クラスターのスケジューリングは、ソースIP、Cookieなどに基づいて行うことができます。

(個人的な理解、あなたが美容室に行くとき、あなたはあなたのスタイリストであるトニーの先生に割り当てられ、女性のクライアントが彼にトニーの先生を任命することを想像することができます;あなたが次回美容室に行くことを想像してください、サロンはまだ手配しますあなたのトニー先生;女性のクライアントは彼女のトニー先生を見つけるでしょう;)

3番目に、haproxyを使用してWebクラスターを構築します

ファイアウォールがオフになり、コア保護がオフになります

3.1 Haproxyサーバー192.168.100.25の構成

1. Haproxyをコンパイルしてインストールします

上传 haproxy-1.4.24.tar.gz 到/opt目录下
[root@localhost ~]# yum -y install pcre-devel bzip2-devel gcc gcc-c++
[root@localhost ~]# cd /opt
[root@localhost opt]# tar xzvf haproxy-1.4.24.tar.gz 
[root@localhost opt]# cd haproxy-1.4.24/
[root@localhost opt]#uname -r                    #查看linux内核版本信息,要注意操作系统版本信息
3.10.0-957.el7.x86_64
[root@localhost haproxy-1.4.24]# make TARGET=linux31      # 根据内核信息编译
[root@localhost haproxy-1.4.24]# make install

2. Haproxyサービスを構成する

[root@localhost haproxy-1.4.24]# mkdir /etc/haproxy
[root@localhost haproxy-1.4.24]# cp examples/haproxy.cfg /etc/haproxy/
[root@localhost haproxy-1.4.24]# vi /etc/haproxy/haproxy.cfg 

global
        log /dev/log   local0 info               
        log /dev/log   local1 notice
        #log loghost    local0 info
        maxconn 10240
        #chroot /usr/share/haproxy
        uid 99
        gid 99
        daemon
        #debug
        #quiet

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        #redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen  webcluster 0.0.0.0:80
        option httpchk GET /index.html
        balance roundrobin
        server inst1 192.168.100.26:80 check inter 2000 fall 3
        server inst2 192.168.100.27:80 check inter 2000 fall 3 backup


##構成の説明####

  • log / dev / log local0 info#ログの設定、機器のログ、情報情報
  • ログ/ dev / log local1通知
  • maxconn 4096#最大接続数
  • uid 99:ユーザーuid gid 99:グループユーザーgid#nobabyユーザー
  • リッスン構成項目は、通常、アプリケーションモジュールパラメータを構成します
  • appli4-backup 0.0.0.0:10004をリッスン:appli4-backupアプリケーションを定義
  • オプションhttpchk /index.html:サーバーのindex.htmlファイルを確認します
  • オプションの持続:要求を強制的に停止したサーバーに送信します
  • ラウンドロビンのバランス:負荷分散スケジューリングアルゴリズムはラウンドロビンアルゴリズムを使用します
  • server inst1 192.168.100.26:80 2000年秋のチェック3:オンラインノードの定義
  • server inst2 192.168.100.27:80 2000秋3のバックアップをチェック:バックアップノードを定義

3.2プロキシログ

1.编辑
[root@localhost haproxy-1.4.24]# vi /etc/rsyslog.d/haproxy.conf       #文件没有的,咱们直接vi创建的

if ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log
& ~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log
& ~


systemctl restart rsyslog.service  



查看日志info信息,登录显示
[root@localhost log]# tail -f /var/log/haproxy/haproxy-info.log 
Sep 24 07:14:32 localhost haproxy[27869]: 192.168.100.2:57847 [24/Sep/2020:07:13:42.349] webcluster webcluster/inst2 2/0/3/1/50008 200 247 - - cD-- 0/0/0/0/0 0/0 "GET / HTTP/1.1"
Sep 24 07:16:08 localhost haproxy[27869]: 192.168.100.2:57866 [24/Sep/2020:07:15:26.955] webcluster webcluster/inst1 0/0/0/1/41874 200 781 - - CD-- 2/2/0/0/0 0/0 "GET / HTTP/1.1"
Sep 24 07:16:23 localhost haproxy[27869]: 192.168.100.2:57932 [24/Sep/2020:07:16:17.712] webcluster webcluster/inst1 0/0/0/1/5318 200 733 - - CD-- 2/2/1/0/0 0/0 "GET / HTTP/1.1"

3.3 web1(nginx)192.168.100.26

Nginxサーバー2の
コンパイルとインストール1. 192.168.100.25 1. Nginxのコンパイルとインストール
Nginxインストールファイルは、公式Webサイトhttp://www.nginx.org/からダウンロードできます。
Nginx 1.12.2の安定バージョンを例に取り、/ optにアップロードしましょう

[root@localhost ~]#yum -y install  gcc-c++  make pcre-devel zlib-devel 
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
[root@localhost ~]# cd /opt
[root@localhost opt]# tar zxvf nginx-1.12.2.tar.gz
[root@localhost opt]# cd nginx-1.12.2
[root@localhost nginx-1.12.2]# 
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx

#测试,咱们编译环境简单的编译的

[root@localhost nginx-1.12.2]# make && make install

[root@localhost nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/   #路径优化

2. Nginxを起動および停止する


killall -1 nginx                                                     ####安全重启
killall -3 nginx                                                     ###停止服务

如果出现: -bash: killall: command not found

yum -y install psmisc  

[root@localhost ~]# nginx                                ####启动
[root@localhost ~]# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      66738/nginx: master 

3. Nginxシステムサービスを追加する

killall -3 nginx    #停止服务为了防止命令冲突,nginx开启的话,sys命令可能会不能用


vi    /lib/systemd/system/nginx
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking 
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

[root@localhost ~]# chmod 754 /lib/systemd/system/nginx.service
[root@localhost ~]# systemctl    start  nginx
[root@localhost ~]# systemctl    enable  nginx

3.テストページをマウントするためにhttpdをインストールします

[root@localhost nginx-1.12.2]# yum  -y install nfs-utils  rpcbind
[root@localhost ~]# showmount -e 192.168.100.44     ####如果还没发布,请到存储服务器发布下,exportfs -rv
Export list for 192.168.100.44:
/opt/51xit  (everyone)
/opt/52xit  (everyone)

[root@localhost ~]# mount 192.168.100.44:/opt/51xit /usr/local/nginx/html/
[root@localhost ~]# vi /etc/fstab 
192.168.100.44:/opt/as1/  /usr/local/nginx/html/ nfs    delfaults,_netdev 0 0      ###开机自动挂载,注意格式对齐

[root@localhost ~]# systemctl    restart  nfs
[root@localhost ~]# systemctl    restart  rpcbind
[root@localhost ~]# systemctl    enable  nfs
[root@localhost ~]# systemctl    enable  rpcbind


3.4 web2(nginx)192.168.100.27

############ nginxのインストールプロセスはweb1 ##########と同じです

1. httpdをインストールしてテストページをマウントします

在这里插入代码片[root@localhost nginx-1.12.2]# yum  -y install nfs-utils  rpcbind
[root@localhost ~]# showmount -e 192.168.100.44     ####如果还没发布,请到存储服务器发布下,exportfs -rv
Export list for 192.168.100.44:
/opt/51xit  (everyone)
/opt/52xit  (everyone)

[root@localhost ~]# mount 192.168.100.44:/opt/51xit /usr/local/nginx/html/
[root@localhost ~]# vi /etc/fstab 
192.168.100.44:/opt/as2/  /usr/local/nginx/html/ nfs    delfaults,_netdev 0 0      ###开机自动挂载,注意格式对齐

[root@localhost ~]# systemctl    restart  nfs
[root@localhost ~]# systemctl    restart  rpcbind
[root@localhost ~]# systemctl    enable  nfs
[root@localhost ~]# systemctl    enable  rpcbind

3.5 NFSストレージサーバー

1. nfs-utils rpcbindをインストールします


yum -y install nfs-utils               #nfs必须安装的,不然无法识别nfs格式,
yum -y install rpcbind

2.共有テストディレクトリとWebファイルを作成する

mkdir  /opt/as1   /opt/as2

echo 'this is as1' >/opt/as1/index.html         #写些数据定义web1
echo 'this is as2' >/opt/as2/index.html         #写些数据定义web2

3.共有ディレクトリを追加します。

vi /etc/exports                  #将共享目录添加在配置内,相当于发布

/opt/as1 192.168.100.0/24(rw,sync)
/opt/as2 192.168.100.0/24(rw,sync)

                                         #重启服务,设置开机自启
systemctl restart nfs      
systemctl restart rpcbind
systemctl enable nfs
systemctl enable rpcbind





showmount -e                  #查看当前共享的目录
Export list for localhost.localdomain:
/opt/as2 192.168.100.0/24
/opt/as1 192.168.100.0/24

3.6 haproxyの検証

192.168.100.25スケジューラーHaproxyサーバーアドレスを入力します。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_47320286/article/details/108784723