1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > keepalived实现高可用nginx反向代理的简单案例

keepalived实现高可用nginx反向代理的简单案例

时间:2019-03-14 08:48:15

相关推荐

keepalived实现高可用nginx反向代理的简单案例

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正。如有不明白的地方,愿可一起探讨。

案例拓扑图

安装keepalived和nginx

安装keepalived

#yum-yinstallkeepalived

创建nginx用户组及nginx用户

#groupadd-rnginx#useradd-gnginx-rnginx

编译安装nginx-1.4.7

#tarxfnginx-1.4.7.tar.gz#cdnginx-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&&makeinstall

检查配置文件是否有语法错误

[root@localhostnginx-1.4.7]#nginx-tnginx:theconfigurationfile/etc/nginx/nginx.confsyntaxisoknginx:[emerg]mkdir()"/usr/local/nginx/client/"failed(2:Nosuchfileordirectory)nginx:configurationfile/etc/nginx/nginx.conftestfailed

修改错误

#mkdir/usr/local/nginx

再次检查配置文件是否有语法错误

[root@localhostnginx-1.4.7]#nginx-t

为nginx提供SysV init脚本

#vim/etc/rc.d/init.d/nginx

#!/bin/sh##nginx-thisscriptstartsandstopsthenginxdaemon##chkconfig:-8515#description:NginxisanHTTP(S)server,HTTP(S)reverse\#proxyandIMAP/POP3proxyserver#processname:nginx#config:/etc/nginx/nginx.conf#config:/etc/sysconfig/nginx#pidfile:/var/run/nginx.pid#Sourcefunctionlibrary../etc/rc.d/init.d/functions#Sourcenetworkingconfiguration../etc/sysconfig/network#Checkthatnetworkingisup.["$NETWORKING"="no"]&&exit0nginx="/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(){#makerequireddirectoriesuser=`nginx-V2>&1|grep"configurearguments:"|sed's/[^*]*--user=\([^]*\).*/\1/g'-`options=`$nginx-V2>&1|grep'configurearguments:'`foroptin$options;doif[`echo$opt|grep'.*-temp-path'`];thenvalue=`echo$opt|cut-d"="-f2`if[!-d"$value"];then#echo"creating"$valuemkdir-p$value&&chown-R$user$valuefifidone}start(){[-x$nginx]||exit5[-f$NGINX_CONF_FILE]||exit6make_dirsecho-n$"Starting$prog:"daemon$nginx-c$NGINX_CONF_FILEretval=$?echo[$retval-eq0]&&touch$lockfilereturn$retval}stop(){echo-n$"Stopping$prog:"killproc$prog-QUITretval=$?echo[$retval-eq0]&&rm-f$lockfilereturn$retval}restart(){configtest||return$?stopsleep1start}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/null2>&1}case"$1"instart)rh_status_q&&exit0$1;;stop)rh_status_q||exit0$1;;restart|configtest)$1;;reload)rh_status_q||exit7$1;;force-reload)force_reload;;status)rh_status;;condrestart|try-restart)rh_status_q||exit0;;*)echo$"Usage:$0{start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"exit2esac

赋予nginx脚本执行权限

#chmod+x/etc/rc.d/init.d/nginx

添加至服务管理列表,并让其开机自动启动

#chkconfig--addnginx#chkconfignginxon

提示:在两个keepalived+nginx主机上都需安装keepalkved和nginx服务

配置nginx为反向代理服务器

编辑nginx.conf配置文件

#cd/etc/nginx/#vimnginx.conf

在nginx.conf配置文件中的http段内添加如下内容

upstreamwebservers{server10.170.2.101;server10.170.2.102;}server{listen80;;location/{proxy_passhttp://webservers;proxy_set_headerX-Real-IP$remote_addr;}}

提示:在两台keepalived+nginx主机的nginx.conf的配置文件所添加的内容一样

配置keepalived

编辑keepalived.conf配置文件

#cd/etc/keepalived/#vimkeepalived.conf

IP地址为10.170.2.60的配置文件内容为:

!ConfigurationFileforkeepalivedglobal_defs{notification_email{acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_fromAlexandre.Cassen@firewall.locsmtp_server192.168.200.1smtp_connect_timeout30router_idLVS_DEVEL}vrrp_instanceVI_1{stateMASTERinterfaceeth0virtual_router_id15priority100advert_int1authentication{auth_typePASSauth_pass111111}virtual_ipaddress{10.170.2.100}notify_master"/etc/init.d/nginxstart"notify_backup"/etc/init.d/nginxstop"notify_fault"/etc/init.d/nginxstop"}

IP地址为10.170.2.61的配置文件内容为

!ConfigurationFileforkeepalivedglobal_defs{notification_email{acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_fromAlexandre.Cassen@firewall.locsmtp_server192.168.200.1smtp_connect_timeout30router_idLVS_DEVEL}vrrp_instanceVI_1{stateBACKUPinterfaceeth0virtual_router_id15priority99advert_int1authentication{auth_typePASSauth_pass111111}virtual_ipaddress{10.170.2.100}notify_master"/etc/init.d/nginxstart"notify_backup"/etc/init.d/nginxstop"notify_fault"/etc/init.d/nginxstop"}

配置web1和web2服务器

编辑web1测试页面

#vim/var/www/html/index.html内容为:<h1></h1>

启动httpd服务

#/etc/init.d/httpdstart

编辑web2测试页面

#vim/var/www/html/index.html内容为:<h1></h1>

启动httpd服务

#/etc/init.d/httpdstart

启动keepalived服务并进行测试

启动keepalived+nginx两台主机的keepalived服务

#/etc/init.d/keepalivedstart

在浏览器中键入10.170.2.100,刷新几下,可得到如下结果

关闭IP地址为10.170.2.60那台主机的keepalived服务

#/etc/init.d/keepalivedstop

再次在浏览器中键入10.170.2.100,刷新几下,查看结果如下

由以上结果可以,keepalived实现了nginx反向代理的高可用以及nginx实现了web的负载均衡效果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。