keepalived实现高可用nginx反向代理的简单案例
寫在前面:如果此文有幸被某位朋友看見并發(fā)現(xiàn)有錯(cuò)的地方,希望批評(píng)指正。如有不明白的地方,愿可一起探討。
案例拓?fù)鋱D
安裝keepalived和nginx
安裝keepalived
#?yum?-y?install?keepalived創(chuàng)建nginx用戶組及nginx用戶
#?groupadd?-r?nginx #?useradd?-g?nginx?-r?nginx編譯安裝nginx-1.4.7
#?tar?xf?nginx-1.4.7.tar.gz? #?cd?nginx-1.4.7 #?./configure?\--prefix=/usr?\--sbin-path=/usr/sbin/nginx?\--conf-path=/etc/nginx/nginx.conf?\--error-log-path=/var/log/nginx/error.log?\--http-log-path=/var/log/nginx/access.log?\--pid-path=/var/run/nginx/nginx.pid??\--lock-path=/var/lock/nginx.lock?\--user=nginx?\--group=nginx?\--with-http_ssl_module?\--with-http_flv_module?\--with-http_stub_status_module?\--with-http_gzip_static_module?\--http-client-body-temp-path=/usr/local/nginx/client/?\--http-proxy-temp-path=/usr/local/nginx/proxy/?\--http-fastcgi-temp-path=/usr/local/nginx/fcgi/?\--http-uwsgi-temp-path=/usr/local/nginx/uwsgi?\--http-scgi-temp-path=/usr/local/nginx/scgi?\--with-pcre #?make?&&?make?install檢查配置文件是否有語法錯(cuò)誤
[root@localhost?nginx-1.4.7]#?nginx?-t nginx:?the?configuration?file?/etc/nginx/nginx.conf?syntax?is?ok nginx:?[emerg]?mkdir()?"/usr/local/nginx/client/"?failed?(2:?No?such?file?or?directory) nginx:?configuration?file?/etc/nginx/nginx.conf?test?failed修改錯(cuò)誤
#?mkdir?/usr/local/nginx再次檢查配置文件是否有語法錯(cuò)誤
[root@localhost?nginx-1.4.7]#?nginx?-t為nginx提供SysV init腳本
#?vim?/etc/rc.d/init.d/nginx#!/bin/sh # #?nginx?-?this?script?starts?and?stops?the?nginx?daemon # #?chkconfig:???-?85?15? #?description:??Nginx?is?an?HTTP(S)?server,?HTTP(S)?reverse?\ #???????????????proxy?and?IMAP/POP3?proxy?server #?processname:?nginx #?config:??????/etc/nginx/nginx.conf #?config:??????/etc/sysconfig/nginx #?pidfile:?????/var/run/nginx.pid#?Source?function?library. .?/etc/rc.d/init.d/functions#?Source?networking?configuration. .?/etc/sysconfig/network#?Check?that?networking?is?up. [?"$NETWORKING"?=?"no"?]?&&?exit?0nginx="/usr/sbin/nginx" prog=$(basename?$nginx)NGINX_CONF_FILE="/etc/nginx/nginx.conf"[?-f?/etc/sysconfig/nginx?]?&&?.?/etc/sysconfig/nginxlockfile=/var/lock/subsys/nginxmake_dirs()?{#?make?required?directoriesuser=`nginx?-V?2>&1?|?grep?"configure?arguments:"?|?sed?'s/[^*]*--user=\([^?]*\).*/\1/g'?-`options=`$nginx?-V?2>&1?|?grep?'configure?arguments:'`for?opt?in?$options;?doif?[?`echo?$opt?|?grep?'.*-temp-path'`?];?thenvalue=`echo?$opt?|?cut?-d?"="?-f?2`if?[?!?-d?"$value"?];?then#?echo?"creating"?$valuemkdir?-p?$value?&&?chown?-R?$user?$valuefifidone }start()?{[?-x?$nginx?]?||?exit?5[?-f?$NGINX_CONF_FILE?]?||?exit?6make_dirsecho?-n?$"Starting?$prog:?"daemon?$nginx?-c?$NGINX_CONF_FILEretval=$?echo[?$retval?-eq?0?]?&&?touch?$lockfilereturn?$retval }stop()?{echo?-n?$"Stopping?$prog:?"killproc?$prog?-QUITretval=$?echo[?$retval?-eq?0?]?&&?rm?-f?$lockfilereturn?$retval }restart()?{configtest?||?return?$?stopsleep?1start }reload()?{configtest?||?return?$?echo?-n?$"Reloading?$prog:?"killproc?$nginx?-HUPRETVAL=$?echo }force_reload()?{restart }configtest()?{$nginx?-t?-c?$NGINX_CONF_FILE }rh_status()?{status?$prog }rh_status_q()?{rh_status?>/dev/null?2>&1 }case?"$1"?instart)rh_status_q?&&?exit?0$1;;stop)rh_status_q?||?exit?0$1;;restart|configtest)$1;;reload)rh_status_q?||?exit?7$1;;force-reload)force_reload;;status)rh_status;;condrestart|try-restart)rh_status_q?||?exit?0;;*)echo?$"Usage:?$0?{start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"exit?2 esac賦予nginx腳本執(zhí)行權(quán)限
#?chmod?+x?/etc/rc.d/init.d/nginx添加至服務(wù)管理列表,并讓其開機(jī)自動(dòng)啟動(dòng)
#?chkconfig?--add?nginx #?chkconfig?nginx?on提示:在兩個(gè)keepalived+nginx主機(jī)上都需安裝keepalkved和nginx服務(wù)
配置nginx為反向代理服務(wù)器
編輯nginx.conf配置文件
在nginx.conf配置文件中的http段內(nèi)添加如下內(nèi)容
upstream?webservers?{server?10.170.2.101;server?10.170.2.102; } server?{listen?80;server_name?www.muluhe.com;location?/?{proxy_pass?http://webservers;proxy_set_header?X-Real-IP?$remote_addr;} }提示:在兩臺(tái)keepalived+nginx主機(jī)的nginx.conf的配置文件所添加的內(nèi)容一樣
配置keepalived
編輯keepalived.conf配置文件
IP地址為10.170.2.60的配置文件內(nèi)容為:
!?Configuration?File?for?keepalived global_defs?{notification_email?{acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from?Alexandre.Cassen@firewall.locsmtp_server?192.168.200.1smtp_connect_timeout?30router_id?LVS_DEVEL } vrrp_instance?VI_1?{state?MASTERinterface?eth0virtual_router_id?15priority?100advert_int?1authentication?{auth_type?PASSauth_pass?111111}virtual_ipaddress?{10.170.2.100}notify_master?"/etc/init.d/nginx?start"notify_backup?"/etc/init.d/nginx?stop"notify_fault?"/etc/init.d/nginx?stop" }IP地址為10.170.2.61的配置文件內(nèi)容為
!?Configuration?File?for?keepalived global_defs?{notification_email?{acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from?Alexandre.Cassen@firewall.locsmtp_server?192.168.200.1smtp_connect_timeout?30router_id?LVS_DEVEL } vrrp_instance?VI_1?{state?BACKUPinterface?eth0virtual_router_id?15priority?99advert_int?1authentication?{auth_type?PASSauth_pass?111111}virtual_ipaddress?{10.170.2.100}notify_master?"/etc/init.d/nginx?start"notify_backup?"/etc/init.d/nginx?stop"notify_fault?"/etc/init.d/nginx?stop" }配置web1和web2服務(wù)器
編輯web1測試頁面
啟動(dòng)httpd服務(wù)
#?/etc/init.d/httpd?start編輯web2測試頁面
啟動(dòng)httpd服務(wù)
#?/etc/init.d/httpd?start啟動(dòng)keepalived服務(wù)并進(jìn)行測試
啟動(dòng)keepalived+nginx兩臺(tái)主機(jī)的keepalived服務(wù)
#?/etc/init.d/keepalived?start在瀏覽器中鍵入10.170.2.100,刷新幾下,可得到如下結(jié)果
關(guān)閉IP地址為10.170.2.60那臺(tái)主機(jī)的keepalived服務(wù)
#?/etc/init.d/keepalived?stop再次在瀏覽器中鍵入10.170.2.100,刷新幾下,查看結(jié)果如下
由以上結(jié)果可以,keepalived實(shí)現(xiàn)了nginx反向代理的高可用以及nginx實(shí)現(xiàn)了web的負(fù)載均衡效果。
轉(zhuǎn)載于:https://blog.51cto.com/muluhe/1555180
總結(jié)
以上是生活随笔為你收集整理的keepalived实现高可用nginx反向代理的简单案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kernel32.dll出错解决方案
- 下一篇: 梦到蛇是生儿子还是女儿