centos 7 에서 keepalived + nginx 는 이중 열 준비 와 역방향 대 리 를 합 니 다.
20854 단어 리 눅 스 운영
setenforce 0 && systemctl stop firewalld
먼저 nginx 를 설치 합 니 다. 저 는 가장 간단 한 yum 설치 방식 을 사용 합 니 다. 자동 yum 소스 에 nginx 가 없습니다. 우 리 는 yum 소스 를 설치 한 다음 에 nginx: yum -y install epel-release && yum -y install nginx
를 설치 해 야 합 니 다. 그리고 keepalived: yum -y install keepalived
를 다시 설치 해 야 합 니 다.. 설치 완료 후 keepalived 명령 도움말 keepalived --help
을 사용 할 수 있 습 니 다. 두 설정 파일 은 모두 etc 디 렉 터 리 에 있 습 니 다. jdk 와 tomcat 를 three 에 업로드 하고 설치 합 니 다. 포트 는 각각 8180, 8280, 8380 입 니 다. 그리고 nginx 를 먼저 설정 합 니 다. 설정 파일 은 / etc / nginx / 에 있 습 니 다.# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx; # , , root
worker_processes auto; # , ,cpu , cpu 。
error_log /var/log/nginx/error.log; #
pid /run/nginx.pid; #PID
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf; #
events {
worker_connections 1024; # , , ulimit -n , ,
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' #
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main; #
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types; #
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server { # ,
listen 80 default_server; #
listen [::]:80 default_server;
server_name _; #
root /usr/share/nginx/html; #
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / { #
proxy_pass http://cs;
proxy_set_header HOST $host; # , cs
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
upstream cs { # , tomcat
server 192.168.56.33:8180;
server 192.168.56.33:8280;
server 192.168.56.33:8380;
}
# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2 default_server;
# listen [::]:443 ssl http2 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# location / {
# }
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
}
설정 이 완료 되면 nginx 와 세 개의 tomcat 서 비 스 를 시작 하면 성공 적 으로 접근 할 수 있 습 니 다. 다음 에 keepalived 를 설정 하 겠 습 니 다. 설정 파일 keeplived. conf 는 설 치 된 / etc / keeplived 에서 다음 설정 파일 에 대한 설명 입 니 다.
! Configuration File for keepalived
global_defs { #
notification_email { # keepalived email , 。
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #
smtp_server 192.168.200.1 # smtp
smtp_connect_timeout 30 # smtp
router_id LVS_DEVEL #Lvs (lvs_id)。 , 。
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 { # vrrp
state MASTER # master, backup, nopreempt , priority 。
interface eth0 #
virtual_router_id 51 # id
priority 100 # , master
advert_int 1 # , 1
authentication { #
auth_type PASS #
auth_pass 1111 #
}
virtual_ipaddress { # ip
192.168.200.16
192.168.200.17
192.168.200.18
}
}
# virtual_server , LVS , keepalive LVS 。ipvsadm 。
virtual_server 192.168.200.100 443 { # IP , vrrp_instance virtual_ipaddress
delay_loop 6 #
lb_algo rr #lvs rr|wrr|lc|wlc|lblc|sh|dh
lb_kind NAT # NAT|DR|RUN
persistence_timeout 50 #
protocol TCP #
real_server 192.168.201.100 443 { # ip
weight 1 # 1,0
SSL_GET {
url {
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.2 1358 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server 192.168.200.200 1358
real_server 192.168.200.2 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.3 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.3 1358 {
delay_loop 3
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.200.4 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.5 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
설정 파일 이 좀 많 습 니 다. 사용 할 수 없 는 기능 을 위로 배치 하지 않 아 도 됩 니 다. 성능 이 더 좋 습 니 다. 제 스 크 립 트 는 다음 과 같 습 니 다.
global_defs {
notification_email {
[email protected]
}
notification_email_from
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id one
}
vrrp_script chk_nginx { # nginx ,
script "/usr/local/check_ng.sh"
interval 3
}
vrrp_instance VI_1 {
state MASTER
interface enp0s8
virtual_router_id 60
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.56.100
}
track_script {
chk_nginx
}
}
다음은 위 에 설 정 된 경로 로 스 크 립 트 를 만 드 는 것 입 니 다
vi /usr/local/check_ng.sh
.#!/bin/bash
d=`date --date today +%Y%m%d_%H:%M:%S`
n=`ps -C nginx --no-heading|wc -l`
if [ $n -eq "0" ]; then
systemctl start nginx
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi
그리고 실행 권한 을 추가 합 니 다. 예비 기 를 설정 합 니 다:
global_defs {
notification_email {
[email protected]
}
notification_email_from
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id two
}
vrrp_script chk_nginx {
script "/usr/local/sbin/check_ng.sh"
interval 3
}
vrrp_instance VI_1 {
state BACKUP
interface enp0s8
virtual_router_id 60
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.56.100
}
track_script {
chk_nginx
}
}
테스트 스 크 립 트 설정 은 호스트 설정 과 같 습 니 다! 생산 환경 에서 112 포트 를 열 어야 합 니 다. keepalived 입 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ngnix 빠 른 입문기능 에 있어 Nginx 는 우수한 웹 서비스 소프트웨어 일 뿐만 아니 라 , 역방향 대리 와 부하 균형 에 있어 유명한 LVS Haproxy 등 전문 대리 소프트웨어 도 가지 고 있 지만 Nginx 의 배 치 는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.