GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでのHAProxy、Nginx、Keepalivedによる負荷分散

ロードバランサーを適切に設定すると、Webサーバーがクラッシュすることなく、大量のトラフィックをスムーズに処理できるようになります。

負荷分散とは何ですか?

負荷分散は、ワークロードを複数のサーバーに分散するプロセスです。これは、会社の日勤労働者と夜勤労働者の間でワークロードを分散するようなものです。負荷分散により、単一障害点を克服するため、サーバーの信頼性が向上します。

負荷分散のないサーバーの例を以下に示します。

この例では、Webサーバーがダウンすると、ユーザーのWebリクエストにリアルタイムでアクセスできなくなります。また、多数のユーザーが同時に同じWebページを要求する場合、単一のWebサーバーでユーザーのWeb要求を処理するのは遅いプロセスになる可能性があります。したがって、ロードバランサーは、サーバーのパフォーマンスを強化し、バックアップを提供し、障害を防ぐために使用されます。

このチュートリアルでは、Nginx、HAProxy、Keepalivedを使用してWebサーバーのロードバランサーを設定します。

ロードバランサーを備えたサーバーの例を以下に示します。

では、Nginx、Haproxy、Keepalivedとは何ですか?

Nginx

Nginxは、Engine-xと発音され、オープンソースのWebサーバーです。 Webサーバーだけでなく、リバースプロキシサーバー、メールプロキシサーバー、ロードバランサー、軽量ファイルサーバー、HTTPキャッシュとしても機能します。 Nginxは、BitBucket、WordPress、Pinterest、Quora、GoDaddyなどの多くの人気サイトで使用されています。

HAProxy

HAProxyはHighAvailabilityProxyの略です。これは、TCPおよびHTTPベースのアプリケーションに負荷分散、高可用性、およびプロキシソリューションを提供するオープンソースのロードバランサーです。サーバーのパフォーマンスと信頼性を向上させるために、複数のサーバーにワークロードを分散するのに最適です。

Haproxyの機能は、エンドユーザーから利用可能なWebサーバーの1つにWeb要求を転送することです。ラウンドロビン、最小接続などのさまざまな負荷分散アルゴリズムを使用できます。

キープアライブ

HAProxyロードバランサーがダウンした場合はどうなりますか?

Keepalivedは、負荷分散と高可用性の両方をサポートするオープンソースプログラムです。これは基本的にルーティングソフトウェアであり、2種類の負荷分散を提供します。

  • レイヤー4(トランスポート層)
  • レイヤー7(アプリケーションレイヤー)

Keepalivedは、次の機能を実行できます。

  • ヘルスチェック(サーバーが稼働しているかどうか)
  • 負荷分散フェイルオーバーを処理するためにVRRP(仮想冗長ルーティングプロトコル)を実装します

キープアライブは、マスターロードバランサーとバックアップロードバランサーの間でフロートし、それらを切り替えるために使用されるフローティングIPとしてVIP(仮想IPアドレス)を使用します。マスターロードバランサーがダウンした場合、バックアップロードバランサーを使用してウェブリクエストを転送します。

Webサーバーの高可用性と負荷分散がどのように維持されるかのシミュレーションに移りましょう。

LinuxでNginx、HAProxy、Keepalivedを使用してロードバランサーを設定する

これはテストラボの実験です。つまり、開始するための単なるテストセットアップです。実サーバーに実装する場合は、微調整が必​​要になる場合があります。このチュートリアルは、自分で設定するために盲目的に従うのではなく、学習資料として使用してください。

このチュートリアルでは、CentOSLinuxディストリビューションを使用しました。他のLinuxディストリビューションを使用することもできますが、すべてのコマンド(特にインストールコマンド)が他のディストリビューションで機能するかどうかは保証できません。

ロードバランサーのセットアップの要件

4つのCentOSインストールシステム(このチュートリアルでは最小限のインストールで十分です)

  • nginxでセットアップする2つのCentOS
  • HAProxyとKeepalivedを使用してセットアップする2つのCentOS

このチュートリアルでは、例として次のIPアドレスを使用しました。これらは、システムに応じて変更できます。これらが静的IPだとは思わないでください。

Webサーバー:

  • 10.13.211.169
  • 10.13.211.158

LoadBalancer:

  • 10.13.211.194
  • 10.13.211.120

仮想IP:

  • 10.13.211.10

LinuxコマンドラインでIPアドレスを簡単に取得できます。

ステップ1:Nginxを使用してWebサーバーをセットアップする

このパートでは、2つのCentOSシステムをWebサーバーとして使用します。最初にNginxをインストールする必要があります。

そのためには、nginxを含むリポジトリを追加し、そこからインストールします:

yum install epel-release
yum install nginx

nginxをインストールした後、Nginxサービスを開始します:

systemctl start nginx

起動するたびにnginxサービスを有効にする:

systemctl enable nginx

nginxサービスのステータスを確認します:

systemctl status nginx

CentOSファイアウォールによってデフォルトでブロックされているnginxのWebトラフィックを許可します。

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd –reload 

2番目のCentOSWebサーバーでも上記の手順を繰り返します。

次のステップに注意してください。

nginxのWebファイルは/usr/share/nginx/htmlにあります Webサーバーを識別するためだけにindex.htmlファイルの内容を変更します。

最初のWebサーバーの場合:

echo “this is first webserver” > /usr/share/nginx/html/index.html

2番目のWebサーバーの場合:

echo “this is second webserver” > /usr/share/nginx/html/index.html

注:仮想マシンを使用している場合は、1つのシステムにNginxをインストールして構成してから、システムのクローンを作成することをお勧めします。その後、2番目のシステムで再構成できます。時間とエラーを節約します。

次に、ブラウザで次のURLにアクセスしてWebサーバーのステータスを確認します:http://SERVER_DOMAIN_NAMEまたはLocal_IP_Address。ここでの例:

http://10.13.211.169

または、ターミナルでLocal_IP_Addressをカールします。ここでの例:

curl 10.13.211.169

次のような出力が得られます:

ステップ2:HAProxyを使用してロードバランサーを設定する

他の2つのシステムでは、次のコマンドを使用してHAProxyをインストールします。

yum -y update
yum -y install haproxy

HAProxy設定ファイルは/etc/haproxyにあります。 cdコマンドを使用してディレクトリに移動し、編集する前にファイルをバックアップします。

cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg_bac

新しいhaproxy.cfgファイルを作成し、任意のエディターでファイルを開きます。

touch haproxy.cfg
vim haproxy.cfg

次に、次の行をファイルに貼り付けます。

global
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy
   stats timeout 30s
   user haproxy
   group haproxy
   daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000

#frontend
#---------------------------------
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back

#round robin balancing backend http
#-----------------------------------
backend http_back
balance roundrobin
#balance leastconn
mode http
server webserver1 10.13.211.169:80 check    # ip_address_of_1st_centos_webserver
server webserver2 10.13.211.158:80 check    # ip_address_of_2nd_centos_webserver

次に、HAProxyサービスを有効にして開始します。

systemctl enable haproxy
systemctl start haproxy

HAProxyのステータスを確認します:

systemctl status haproxy

ブラウザのURLに移動して、haproxyのサービスを確認します:http:// load balancer’s IP Address / haproxy?stats。ここで使用される例:

http://10.13.211.194/haproxy?stats

または、ターミナルでコマンド$ curl LoadBalancer_IP_Address

を使用します
curl 10.13.211.194
curl 10.13.211.194

curlを2回実行すると、curlコマンドの出力が異なります。これは、ロードバランサーでのリクエストに対して、さまざまなWebサーバーから(一度に1つずつ)応答が送信されるためです。

出力は次のようになります:

ステップ3:Keepalivedを使用して高可用性を設定する

Keepalivedは、両方のHAProxyロードバランサーCentOSシステム(上記で構成したばかり)にインストールする必要があります。 1つはマスター(メインロードバランサー)として機能し、もう1つはバックアップロードバランサーとして機能します。

両方のシステムで、次のコマンドを実行します。

yum install -y keepalived

Keepalivedの構成ファイルは、/etc/keepalived/keepalived.confにあります。 。元のkeepalived.confファイルをバックアップし、新しいkeepalived.confファイルで次の構成を使用します。

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bac
touch /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf

次の行を構成ファイルに貼り付けます(メールアドレスを変更することを忘れないでください):

global_defs {
notification_email {
linuxhandbook.com
[email protected]
}
notification_email_from [email protected]
smtp_server 10.13.211.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_instance VI_1 {
state MASTER
interface eth0 #put your interface name here. [to see interface name: $ ip a ]
virtual_router_id 51
priority 101 # 101 for master. 100 for backup. [priority of master> priority of backup]
advert_int 1
authentication {
auth_type PASS
auth_pass 1111 #password
}
virtual_ipaddress {
10.13.211.10 # use the virtual ip address. 
}
}

注:仮想IPは、ネットワーク内の任意のライブIPにすることができます。ロードバランサーのIPアドレスの範囲に近い。ここで、ロードバランサーのIPは10.13.211.194と10.13.211.120であり、VIPは10.13.211.10です

システムの想定に従って構成ファイルを編集します。マスターとバックアップの構成に注意してください。ファイルを保存し、Keepalivedプロセスを開始して有効にします。

systemctl start keepalived
systemctl enable keepalived

キープアライブのステータスを表示するには:

systemctl status keepalived

注:仮想マシンを使用している場合は、HaproxyとKeepalivedを1つのシステムにインストールして構成してから、システムのクローンを作成することをお勧めします。その後、2番目のシステムで再構成できます。時間とエラーを節約します。

次に、高可用性ロードバランサーのステータスを確認するには、ターミナルに移動して次のボタンを押します。

$ while true; do ; curl 10.13.211.10 ; sleep 1; done;

ctrl+cを押します ターミナルの実行を停止します。

出力は次のようになります:

ファイルのインストールと構成に不快感を感じる場合は、GitHubリポジトリからスクリプトをダウンロードして、実行するだけです。

このチュートリアルが、高可用性を備えたLinuxでのロードバランサーのセットアップに役立つことを願っています。もちろん、これは単純なセットアップでしたが、負荷分散と高可用性の処理についてのアイデアを確実に提供します。

質問や提案がある場合は、下にコメントを残してください。

作成者 :Rishi Raj Gautamは、Linux愛好家であり、オープンソースの活動家です。


Linux
  1. LinuxにNginxWebサーバーをインストールする方法

  2. Linuxのセキュリティとユーザビリティのバランス

  3. Nginx 負荷分散

  1. KWriteとKateを使用してLinuxでテキストを編集する

  2. LinuxターミナルをtmuxとGitでカスタマイズする

  3. killとkillallを使用したLinuxでのプロセスの管理

  1. E2Eクラウドでの負荷分散のためのHAProxyの使用:セッションの粘着性とセキュリティ

  2. LinuxでNGINXWebサーバーを強化および保護する方法

  3. LinuxでKeepAlivedを使用して高可用性NGINXをセットアップする方法