nginx+keepalived实现双主负载均衡

作者: 云计算机网 分类: 云计算知识 发布时间: 2016-05-28 22:10

测试环境如下:

系统:Ceentos 6.4 64位

nginx服务器 no1:172.16.4.7 vip:172.16.4.55

nginx服务器 no2:172.16.4.11 vip:172.16.4.56

No1、no2双机互信

#vim /etc/hosts

172.16.4.7 no1.test.com no1

172.16.4.11 no2.test.com no2

No1:

#ssh-keygen -t rsa -P ‘’

#ssh-copy-id -i .ssh/id_rsa.pub root@no2.test.com

No2:

#ssh-keygen -t rsa -P ‘’

#ssh-copy-id -i .ssh/id_rsa.pub root@no1.test.com

还要确保两个节点时间同步

一、Nginx+keepalived 安装

nginx-1.4.2.tar.gz

#yum -y install keepalived

1、安装编译所依赖的包pcre-devel openssl-devel

# yum -y install pcre-devel openssl-devel

2、解压并添加用户nginx,以nginx的身份运行服务

#tar xf nginx-1.4.2.tar.gz -C /usr/local/

#cd /usr/local/nginx-1.4.2

# groupadd -r nginx

# useradd -r -g nginx nginx

3、编译和安装

# ./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=/var/tmp/nginx/client/ \

--http-proxy-temp-path=/var/tmp/nginx/proxy/ \

--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \

--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \

--http-scgi-temp-path=/var/tmp/nginx/scgi \

--with-pcre

编译过程中如果提示我们还需要依赖某个包时,我们要安装对应的devel包

# make && make install

4、为nginx提供SysV init脚本

脚本存放位置/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 2esac 
  • 在Linux中,有时为了简单起见,需要自动将文件上传到ftp,爱站技术频道小编介绍了如何在Linux实现文件上传ftp服务器的代码实现,一起来了解一下吧!

    在Linux中,有时为了简单起见,需要自动将文件上传到ftp,爱站技术频道小编介绍了如何在Linux实现文件上传ftp服务器的代码实现,一起来了解一下吧!

    具体的脚本sync.sh如下:

    #!/bin/bashsource ~/.bashrc# 模拟进入ftp命令行模式,其中EOF表示退出标记符ftp -niv lt;lt;- EOF# 根据ftp的ip地址与端口号,连接ftp服务器open ip port# 输入用户名与密码user userName password# 以bin模式进行传输,与ASCII模式有区别,使用bin模块能够防止乱码问题bin# 上传文件get $1# 结束bye#退出EOF

    然后将该脚本sync.sh加入环境变量,每次只需执行 sync.sh filename即可,具体的执行过程如下:

    Connected to *.*.*.*.220 Microsoft FTP Service331 Password required for userName.230 User logged in.Remote system type is Windows_NT.200 Type set to I.local: filename remote: filename200 PORT command successful.125 Data connection already open; Transfer starting.226 Transfer complete.112089125 bytes received in 44.62 secs (2453.3 kB/s)221 Goodbye.

    通过爱站技术频道小编介绍的内容,相信大家都有了一定的了解,想要了解更多的技术内容,请继续关注爱站技术频道吧!

  • 相关推荐:

  • 如何在Linux实现文件上传
  • 如何实现100%的虚拟化?
  • 如何使用P2V迁移实现虚拟
  • 青岛市口腔医院信息机房
  • 如何抢占新零售先机,真
  • 实现存储现代化英特尔加
  • 戴尔机架式基础设施DS
  • 人工智能的赋能者中科曙
  • 弯道超车成为过去时中国
  • Facebook提前一年实现数据
  • 网站内容禁止违规转载,转载授权联系中国云计算网