Ubuntu20.04 Nginxインストール、ロードバランシング、無停止の導入


https://velog.io/@mooh2jj/docker-jenkins-github-%EB%B0%B0%ED%8F%AC
このブログに基づいて、以下の操作を行いました.
Nginxは、サーバを非表示にしてリバースエージェントとロード・バランシングを行うWebサーバです.個々のnginxインスタンスを作成し,jenkinsに配置された2つのsshインスタンスを用いて実験を行う.
Nginxのインストールと実行
sudo apt-get install nginx -y 
sudo systemctl start nginx
sudo systemctl enable nginx
Dockerとしてインストールおよび実行
sudo docker pull nginx
sudo docker container run --name webserver -d -p 80:80 nginx
[설치 ip주소]:80 or [설치 ip주소]と入力した場合は、必ず画面に表示されます.
ローカルにインストールする場合は、http://localhost:8080行きますを確認します.

Nginxの停止
# ngnix 중지
sudo docker stop [nginx containerID] or webserver
# ngnix 시작
sudo docker start [nginx containerID] or webserver
Jenkins SSHサーバの追加
次に、負荷バランスを検証するために、ジェンキンスインスタンスに戻るSSHインスタンスを3つ用意します.
https://velog.io/@mooh 2 jj/docker-jenkins-github-導入
このブログを参照してください.
各SSHインスタンスにはdockerコマンドがあります.
sudo chmod 666 /var/run/docker.sock
このコマンドを使用してPermissionの問題を解決する必要があります.
複数のSSHサーバを追加するには、Jenkinsホームページ>Jenkins管理>プリファレンスパラメータ>Publish over SSHボタンを押し、Jenkins公開鍵を登録するSSHインスタンス名とipアドレスを入力して追加します.

そしてAdd>Item 프로젝트です.구성SSH서버を追加する必要があります.
Nginxロードバランシングconfファイルの作成
nginxインスタンスで、リバースエージェントとロードバランスを設定するためのconfファイルを開きます.
sudo rm -rf /etc/nginx/sites-enabled/default
sudo vi /etc/nginx/conf.d/load-balancing.conf
このようにして次の内容に変更します.
upstream cpu-bound-app {
  server {instance_1번의_ip}:{지정한 포트번호};
  server {instance_2번의_ip}:{지정한 포트번호}; 
  server {instance_3번의_ip}:{지정한 포트번호}; 

}

server {
		listen     80;     
    
		location / {
			proxy_pass http://cpu-bound-app;
	        proxy_redirect      off;
	        proxy_set_header    X-Real-IP $remote_addr;
	        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
	        proxy_set_header    Host $http_host;
		}

	}

次に、アプリケーションが実際のnginx ipアドレスで実行されていることを確認します.
url : execute shell
Nginx障害ログの確認
sudo tail -f /var/log/nginx/error.log
無停止配置:sleep
導入中にインスタンスが低下するため、ユーザーは{nginx ip주소}/testなどのサイトの中断を体験する可能性があります.したがって、無停止のサイト導入が必要です.502에러にはいくつかの方法がありますが、インスタンス間では遅延があります.

2つのSSHインスタンスと3つのsleepの間に30秒の遅延を提供するために、Exec commanedを追加する.
# 인스턴스 2번, 3번에 추가
sleep 30
sudo docker stop $(sudo docker ps -a -q)
sudo docker rmi -f mooh2jj/docker-jenkins-github-test
sudo nohup docker run -p 47788:47788 mooh2jj/docker-jenkins-github-test > /dev/null 2>&1 &

これにより、リクエストがそうであっても、サイトがデプロイ中に502エラーを発生することを防止できます.
リファレンス

  • https://help.clouding.io/hc/en-us/articles/360019908839-How-to-set-up-Nginx-load-balancing-server-on-Ubuntu-20-04

  • ソース:https://github.com/mooh2jj/docker-jenkins-github-test.git