共计 9466 个字符,预计需要花费 24 分钟才能阅读完成。
称之为反向代理也只要是感觉结构上和 Nginx-Tomcat 反向代理集群比较像而已,非官方哦~
附上脚本地址,加在最后面
—————————————- 正文 —————————————-
Nginx-1.9.7 可以在官方下载,自带了 TCP 代理的模块,但是需要在编译的时候添加参数去明文指定才会编译进去
参考官方文档,编译时加上如下参数:–with-stream
然后 make && make install 完成编译安装(介绍 nginx 安装的资料很多,不再复述)
—————————————- 配置 & 验证 —————————————-
附上一份简单的配置文件
stream {
upstream mysql {
hash $remote_addr consistent;
server MySQL_URL:3306 max_fails=3 fail_timeout=30s;
}
server {
listen 13579;
proxy_connect_timeout 30s;
proxy_timeout 600s;
proxy_pass mysql;
}
}
启动以后看看端口的状态
和 HTTP 的反向代理不同的地方就在整个模块,不再是 http 模块了,而是 stream 模块,里面的语法基本是一致的,在 upstream 里面,可以看到依然可以利用 Nginx 的负载均衡策略,所以,Nginx-1.9.x 成功加入 MySQL 中间件豪华午餐~
那么在其他的机器上试试通过网络远程访问这个端口来连接 MySQL
可以看到通过这个 13579 的端口确实可以访问到 MySQL
—————————————- 分割线 —————————————-
CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm
使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm
搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm
CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm
CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm
CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm
Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm
Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm
—————————————- 用途 —————————————-
说起用途的话,可以考虑利用 Nginx 作为中间件来搭建双主多从的 HA 集群,然后写一个脚本来监控从库的状态来实时切换 Nginx,屏蔽 down 机主库对应的从库或者是 down 掉的从库,之后再上 5.7,利用多主模式来横向扩展 MySQL 集群的写入能力,同时监控从库的脚本也可以省略点逻辑,不用去判断对应的主库是否失败。
做出两套方案以后,再去验证实际的可用性,性能什么的 … 近期的计划差不多就做好了~
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-11/125446p2.htm
Linux 下用的脚本
批量启动 Tomcat
- #!/bin/bash
- #JDK 路径
- export Java_HOME=”/usr/jdk1.7.0_09″
- # 前缀路径
- PREFIX=”/data/webapp/apache-tomcat-80″
- # 起始编号
- BEGIN=1
- # 终止编号
- END=20
- sudo chown -R ccapp:ccapp /data/webapp/apache-tomcat-80*
- sudo chown -R ccapp:ccapp /usr/logs/*
- # 关闭
- stop(){
- for((i=$BEGIN;i<=$END;i++))
- do
- # 抽取 Tomcat 进程号 PID
- #pid=`ps -ef | grep tomcat7-$i |grep -v ‘grep’ | awk ‘{print $2}’`
- # 测试当前进程是否处于活动状态
- #test “$pid” != “” && kill $pid && echo “Stop tomcat7-$i Successful!” || echo “Stop tomcat7-$i Failed!”
- if [$i -lt 10]; then
- #echo “tomcat7-0$i”
- pid=`ps -ef | grep apache-tomcat-800$i/ |grep -v ‘grep’ | awk ‘{print $2}’`
- test “$pid” != “” && sudo kill $pid && echo “Stop apache-tomcat-800$i Successful!” || echo “Stop apache-tomcat-800$i Failed!”
- else
- #echo “tomcat7-$i”
- pid=`ps -ef | grep apache-tomcat-80$i/ |grep -v ‘grep’ | awk ‘{print $2}’`
- test “$pid” != “” && sudo kill $pid && echo “Stop apache-tomcat-80$i Successful!” || echo “Stop apache-tomcat-80$i Failed!”
- fi
- sleep 1
- done
- #echo
- }
- # 启动
- start(){
- for((i=$BEGIN;i<=$END;i++))
- do
- # 启动 Tomcat
- #$PREFIX$i/bin/startup.sh && echo “Start tomcat7-$i Successful!”
- #echo
- if [$i -lt 10]; then
- #echo “tomcat7-0$i”
- $PREFIX\0$i/bin/startup.sh && echo “Start apache-tomcat-800$i Successful!”
- else
- #echo “tomcat7-$i”
- $PREFIX$i/bin/startup.sh && echo “Start apache-tomcat-80$i Successful!”
- fi
- sleep 1
- done
- }
- status(){
- for((i=$BEGIN;i<=$END;i++))
- do
- # 抽取 Tomcat 进程号 PID
- #pid=`ps -ef | grep tomcat7-$i |grep -v ‘grep’ | awk ‘{print $2}’`
- # 打印 PID
- #echo “tomcat7-$i – $pid”
- if [$i -lt 10]; then
- #echo “tomcat7-0$i”
- #$PREFIX\810$i/bin/startup.sh && echo “Start tomcat7-810$i Successful!”
- pid=`ps -ef | grep apache-tomcat-800$i/ |grep -v ‘grep’ | awk ‘{print $2}’`
- echo “apache-tomcat-800$i – $pid”
- else
- #echo “tomcat7-$i”
- #$PREFIX\81$i/bin/startup.sh && echo “Start tomcat7-81$i Successful!”
- pid=`ps -ef | grep apache-tomcat-80$i/ |grep -v ‘grep’ | awk ‘{print $2}’`
- echo “apache-tomcat-80$i – $pid”
- fi
- done
- }
- case “$1” in
- start)
- #echo “Start tomcat7-$BEGIN ~ tomcat7-$END”
- #echo
- start
- #echo
- ;;
- stop)
- #echo “Stop tomcat7-$BEGIN ~ tomcat7-$END”
- #echo
- stop
- #echo
- ;;
- restart)
- #echo “Restart tomcat7-$BEGIN ~ tomcat7-$END”
- #echo
- stop
- sleep 2
- start
- #echo
- ;;
- status)
- #echo “Pid of tomcat7-$BEGIN ~ tomcat7-$END”
- status
- #echo
- ;;
- *)
- echo $”Usage: $0 {start|stop|restart|status}”
- exit 1
- ;;
- esac
Nginx 自检脚本(每 60 秒自动检测一次)
- #!/bin/bash
- prefix=/usr/local/nginx_1.4.6/sbin
- while :
- do
- nginxpid=`ps -C nginx –no-header | wc -l`
- if [$nginxpid -eq 0]; then
- DATE=$(date +%Y-%m-%d %T)
- killall nginx && $prefix/nginx && echo “$DATE Restart Nginx successful~” || echo “$DATE Fail to restart Nginx!”
- sleep 60
- else
- DATE=$(date +%Y-%m-%d %T)
- echo “$DATE : Nginx_Check is running, everything is OK~”
- sleep 60
- fi
- done
业务部署自动化脚本
点击 ( 此处 ) 折叠或打开
- #!/bin/bash
- # 脚本说明
- # 内容分发至各实例
- # 变更记录
- #
- # 系统环境变量
- PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
- export PATH
- # 自定义变量
- bak=`date +%Y%m%d-%T`
- prefix=/usr/
- #tomcat_path=/usr/apache-tomcat-7.0.33/bin
- project=APP
- #begin=1
- #end=15
- # 实例备份
- cd $prefix
- mkdir -p /home/user/$project/$bak
- \cp -rf $project /home/user/$project/$bak
- # 根据实际情况修改, 脚本参数如 APP.zip 解压后可以为 APP 的文件夹
- # 也可以是 APP 文件夹下的内容
- cd /tmp/user/
- rm -rf ${project}
- mkdir $project
- cp $project\.war ./$project
- cd $project
- unzip ${project}\.war
- #unzip $1
- cd ..
- #chmod -R 755 $project
- # 分发 copy, 如果所有的工程都指向一个文件夹,则无需分发,直接拷贝
- #for((i=$begin;i<=$end;i++))
- #do
- # 根据需要增加覆盖 copy 的项目
- # \cp -rf $project $prefix-$i/webapps/
- #done
- #rm -rf $prefix$project
- cp -avpf $project\/* $prefix$project\/
- #Tomcat 操作留给其他功能模块控制
- #cd $tomcat_path
- #./shutdown.sh
- #./startup.sh
- echo “update successful!”
懒人用删除 Tomcat 日志脚本(其实什么日志都能删)
- #!/bin/bash
- # 前缀路径
- PREFIX=“/usr/TomcatSvr7-“
- # 起始编号
- BEGIN=2
- # 终止编号
- END=20
- for((i=$BEGIN;i<=$END;i++))
- do
- #删除历史记录
- rm –rf $prefix$i/logs/*0*
- cat /dev/null > $prefix$i/logs/catalina.out
- done
Nginx 日志管理
- logs_path=\”/usr/local/nginx_1.4.6/logs/\”
- mv ${logs_path}www.log ${logs_path}www_$(date -d \”yesterday\” +\”%Y%m%d\”).log
- mv ${logs_path}error.log ${logs_path}error_$(date -d \”yesterday\” +\”%Y%m%d\”).log
- kill -HUP `cat ${logs_path}nginx.pid`
- find $logs_path -name \”www_*log\” -mtime +0 -exec rm -rf {} ;
- #find $logs_path -name \”access_*log\” -mtime +2 -exec rm -rf {} ;
- find $logs_path -name \”error_*log\” -mtime +0 -exec rm -rf {} ;
在 root 下输入 crontab -e , 01 00 * * * /home/nginxlog.sh,指定每天 0:01 分自动执行脚本~
自动配置 LVM 分区
点击 ( 此处 ) 折叠或打开
- #!/bin/bash
- DEV=/dev/sdb
- VG=VG_DATA
- LG=lv_data
- DIR=/data
- pvcreate $DEV \
- && vgcreate $VG $DEV \
- && lvcreate -l 100%PVS -n $LG $VG \
- && mkfs.ext4 /dev/$VG/$LG \
- && mkdir $DIR
- && mount /dev/$VG/$LG $DIR
Nginx 配置
- server_tokens off;
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
- keepalive_timeout 65;
- client_header_timeout 10;
- client_body_timeout 10;
- reset_timedout_connection on;
- send_timeout 10;
- charset utf-8;
- server_names_hash_bucket_size 128;
- client_header_buffer_size 512k;
- large_client_header_buffers 4 64k;
- client_max_body_size 16m;
- client_body_buffer_size 256k;
- proxy_connect_timeout 60;
- proxy_send_timeout 30;
- proxy_read_timeout 30;
- proxy_buffer_size 16k;
- proxy_buffers 4 256k;
- proxy_busy_buffers_size 512k;
- proxy_temp_file_write_size 512k;
- open_file_cache max=10240 inactive=20s;
- open_file_cache_valid 30s;
- open_file_cache_min_uses 10;
- open_file_cache_errors on
Tomcat 连接池配置
- port=”5000″
- protocol=”org.apache.coyote.http11.Http11NioProtocol”
- connectionTimeout=”30000″
- URIEncoding=”UTF-8″
- maxThreads=”1000″
- minSpareThreads=”100″
- acceptCount=”300″
- acceptorThreadCount=”6″
- keepAliveTimeout=”120000″
- maxKeepAliveRequests=”1000″
- enableLookups=”false”
- redirectPort=”8443″ />
实时查看连接数
- watch -n 1 “netstat -n | awk ‘/^tcp/ {++S[\$NF]} END {for(a in S) print a, S[a]}'”
远程切换 Nginx
- #!/bin/bash
- PORT1=8066
- PORT2=10066
- switch_to_8066(){
- ssh 10.10.10.11 “/bin/bash /root/nginx_p$PORT1.sh;exit”
- }
- switch_to_10066(){
- ssh 10.10.10.11 “/bin/bash /root/nginx_p$PORT2.sh;exit”
- }
- switch_to_all(){
- ssh 10.10.10.11 “/bin/bash /root/nginx_all.sh;exit”
- }
- case “$1” in
- switch_to_8066)
- echo “switch nginx to port $PORT1”
- switch_to_8066
- echo “switch to port $PORT1 success”
- ;;
- switch_to_10066)
- echo “switch nginx to port $PORT2”
- switch_to_10066
- echo “switch to port $PORT2 success”
- ;;
- switch_to_all)
- echo “switch nginx to port $PORT1 and $PORT2”
- switch_to_all
- echo “switch to port $PORT2 and $PORT1 success”
- ;;
- *)
- echo $”Usage: $0 {switch_to_$PORT1|switch_to_$PORT2|switch_to_all}”
- exit 1
- ;;
- esac
被远程调用的脚本,只有红色部分有区别
- #!/bin/bash
- NGINX_CONF=/usr/local/nginx_1.8.0/conf/
- NGINX_SBIN=/usr/local/nginx_1.8.0/sbin/nginx
- CONF_FILE=nginx_8066.conf
- ps -ef | grep nginx |grep -v ‘grep’ |grep -v ‘nginx_p8066.sh’ | awk ‘{print $2}’ | xargs kill
- $NGINX_SBIN -c $NGINX_CONF$CONF_FILE
Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-11/125446.htm
称之为反向代理也只要是感觉结构上和 Nginx-Tomcat 反向代理集群比较像而已,非官方哦~
附上脚本地址,加在最后面
—————————————- 正文 —————————————-
Nginx-1.9.7 可以在官方下载,自带了 TCP 代理的模块,但是需要在编译的时候添加参数去明文指定才会编译进去
参考官方文档,编译时加上如下参数:–with-stream
然后 make && make install 完成编译安装(介绍 nginx 安装的资料很多,不再复述)
—————————————- 配置 & 验证 —————————————-
附上一份简单的配置文件
stream {
upstream mysql {
hash $remote_addr consistent;
server MySQL_URL:3306 max_fails=3 fail_timeout=30s;
}
server {
listen 13579;
proxy_connect_timeout 30s;
proxy_timeout 600s;
proxy_pass mysql;
}
}
启动以后看看端口的状态
和 HTTP 的反向代理不同的地方就在整个模块,不再是 http 模块了,而是 stream 模块,里面的语法基本是一致的,在 upstream 里面,可以看到依然可以利用 Nginx 的负载均衡策略,所以,Nginx-1.9.x 成功加入 MySQL 中间件豪华午餐~
那么在其他的机器上试试通过网络远程访问这个端口来连接 MySQL
可以看到通过这个 13579 的端口确实可以访问到 MySQL
—————————————- 分割线 —————————————-
CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm
使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm
搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm
CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm
CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm
CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm
Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm
Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm
—————————————- 用途 —————————————-
说起用途的话,可以考虑利用 Nginx 作为中间件来搭建双主多从的 HA 集群,然后写一个脚本来监控从库的状态来实时切换 Nginx,屏蔽 down 机主库对应的从库或者是 down 掉的从库,之后再上 5.7,利用多主模式来横向扩展 MySQL 集群的写入能力,同时监控从库的脚本也可以省略点逻辑,不用去判断对应的主库是否失败。
做出两套方案以后,再去验证实际的可用性,性能什么的 … 近期的计划差不多就做好了~
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-11/125446p2.htm