LVS+NGINX+TOMCAT_集群实施操作记录.docx

LVS
IP:
Eth0:192.168.100.115
Eth1:192.168.100.215
Vi
/etc/init.d./lvs
#!/bin/sh
#
# lvs
Start lvs
#
# chkconfig: 2345 08 92
# description: Starts, stops and saves lvs
#
SNS_VIP=192.168.100.215
SNS_RIP1=192.168.100.114
SNS_RIP2=192.168.100.113
. /etc/rc.d/init.d/functions
#logger $0 called with $1
retval=0
start()
{
#set squid vip
/sbin/ipvsadm --set 30 5 60
#/sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask
255.255.255.255 broadcast $SNS_VIP up
#/sbin/route add -host $SNS_VIP dev eth0:0
/sbin/ipvsadm -A -t $SNS_VIP:80 -s rr
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1 -g
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2 -g
touch /var/lock/subsys/ipvsadm > /dev/null 2 >&1
echo "ipvsadm started"
}
stop()
{
/sbin/ipvsadm -C
/sbin/ipvsadm -Z
#ifconfig eth0:0 down
#route del $SNS_VIP
rm -rf /var/lock/subsys/ipvsadm > /dev/null 2 >&1
echo "ipvsadm stoped"
}
status()
{
if [ ! -e /var/lock/subsys/ipvsadm ];then
echo "ipvsadm stoped"
exit 1
else
echo "ipvsadm OK"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|status}"
retval=1
esac
exit $retval
keepalvived
tar xf keepalived-1.2.7.tar.gz
cd keepalived-1.2.7
./configure --prefix=/ --mandir=/usr/local/share/man/
--with-kernel-dir=/usr/src/kernels/2.6.32-279.el6.x86_64
Make
make install
cd /etc/keepalived/
mv keepalived.conf keepalived.conf.default
chkconfig --add keepalived
chkconfig keepalived on
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id Director1
}
#VRRP(虚拟路由冗余协议)实例配置
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.122.254/24 eth1
}
}
#LVS配置
virtual_server 192.168.100.215 80 {
delay_loop 3
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
#
persistence_timeout 50
protocol TCP
real_server
192.168.100.113 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.100.114 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
}
}
}
}
LVS-realserver
Ip 192.168.100.113
Ip 192.168.100.114
Vi /etc/init.d/rsup
#!/bin/bash
VIP=192.168.100.215
ifconfig lo:0 $VIP broadcast $VIP netmask
255.255.255.255 up
#route add –host $VIP dev lo:0
echo "1"
>/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2"
>/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1"
>/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2"
>/proc/sys/net/ipv4/conf/all/arp_announce
#sysctl –p
Nginx
Ip 192.168.100.122(nfs)
Ip 192.168.100.113
Ip 192.168.100.114
#安装zlib
tar xzvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make && make install
#安装pcre
tar zxvf pcre-7.9.tar.gz
cd pcre-7.9
./configure --prefix=/usr/local/pcre
make && make install
wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz
tar -zxvf
nginx_mod_h264_streaming-2.2.7.tar.gz
unzip
nginx_upstream_check_module-master.zip
mv
./nginx_upstream_check_module-master /root/health
tar -xvf nginx-1.4.1.tar.gz -C /usr/src/
useradd nginx
cd /usr/src/nginx-1.4.1
patch
-p1 < /root/health/check_1.2.6+.patch
./configure --user=nginx
--group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_flv_module --add-module=../nginx_mod_h264_streaming-2.2.7
--with-pcre=/software/pcre-7.9 --with-zlib=/software/zlib-1.2.3
--prefix=/usr/local/nginx --add-module=/root/health
make
&& make install
/usr/local/nginx/sbin/nginx
开机自动启动
vi /etc/init.d/nginx
#!/bin/bash
#
#
nginx - this script starts and stops the nginx daemin
#
#
chkconfig: - 85 15
#
description: Nginx is an HTTP(S) server,
HTTP(S) reverse \
# proxy and
IMAP/POP3 proxy server
#
processname: nginx
#
config:
/usr/local/nginx/conf/nginx.conf
#
pidfile:
/usr/local/nginx/logs/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 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop()
{
echo
-n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[
$retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart()
{
configtest || return $?
stop
start
}
reload()
{
configtest || return $?
echo
-n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
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" in
start)
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
##############################################################################
改权限
chmod 755
/etc/init.d/nginx
chkconfig nginx on
chkconfig --list nginx
nginx 0:off 1:off
2:on 3:on 4:on
5:on 6:off
service nginx
start
service nginx
stop
service nginx
restart
service nginx
reload
/etc/init.d/nginx
start
/etc/init.d/nginx
stop
/etc/init.d/nginx
restart
/etc/init.d/nginx
reload
Nginx 配置文件
vi /usr/local/nginx/conf/nginx.conf
#user nginx nginx;
worker_processes
12;
error_log /usr/local/nginx/logs/error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile
65535;
events
{
use epoll;
worker_connections 204800;
}
http
{
include
mime.types;
default_type
application/octet-stream;
charset
utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 2k;
large_client_header_buffers 4 4k;
client_max_body_size 8m;
sendfile on;
tcp_nopush
on;
keepalive_timeout 60;
fastcgi_cache_path
/usr/local/nginx/fastcgi_temp levels=1:2
keys_zone=TEST:10m
inactive=5m;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 1638;
fastcgi_buffers 16 16k;
fastcgi_busy_buffers_size 16k;
fastcgi_temp_file_write_size 16k;
fastcgi_cache TEST;
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout
invalid_header http_500;
open_file_cache max=204800 inactive=20s;
open_file_cache_min_uses 1;
open_file_cache_valid 30s;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript
text/css application/xml;
gzip_vary on;
upstream
nginx_server {
ip_hash;
server 192.168.100.122:80;
}
upstream
web_server {
ip_hash;
server 192.168.100.131:9001;
server 192.168.100.132:9001;
server 192.168.100.133:9001;
server 192.168.100.134:9001;
check interval=3000 rise=2 fall=5
timeout=1000;
}
upstream
napi_server {
ip_hash;
server 192.168.100.131:9002;
server 192.168.100.132:9002;
server 192.168.100.133:9002;
server 192.168.100.134:9002;
server 192.168.100.131:9003;
server 192.168.100.132:9003;
server 192.168.100.133:9003;
server 192.168.100.134:9003;
server 192.168.100.131:9004;
server 192.168.100.132:9004;
server 192.168.100.133:9004;
server 192.168.100.134:9004;
check interval=3000 rise=2 fall=5
timeout=1000;
}
upstream
oapi_server {
ip_hash;
server 192.168.100.131:9005;
server 192.168.100.132:9005;
server 192.168.100.133:9005;
server 192.168.100.134:9005;
server 192.168.100.131:9006;
server 192.168.100.132:9006;
server 192.168.100.133:9006;
server 192.168.100.134:9006;
check interval=3000 rise=2 fall=5
timeout=1000;
}
server {
listen 80;
server_name localhost;
location ~
.*\.(gif|jpg|jpeg|png|bmp|swf|html|mp3|wma|wmv)$
{
root /usr/wodm/;
proxy_pass http://nginx_server;
}
location ~ .*\.(js|css)?$
{
expires 1h;
}
location /NginxStatus
{
stub_status on;
access_log on;
auth_basic "NginxStatus";
#auth_basic_user_file conf/htpasswd;
}
location /nstatus {
check_status;
access_log off;
}
error_page
500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
log_format access
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent
"$http_referer" ' '"$http_user_agent"
$http_x_forwarded_for';
access_log /usr/local/nginx/logs/access.log access;
include
/usr/local/nginx/conf/vhost/*.conf;
}
Nginx(nfs)
Nginx.conf
#user nginx nginx;
worker_processes
16;
#worker_cpu_affinity
00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
error_log
/usr/local/nginx/logs/error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile
204800;
events
{
use epoll;
worker_connections 204800;
}
http
{
include
mime.types;
default_type
application/octet-stream;
charset
utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 2k;
large_client_header_buffers 4 4k;
client_max_body_size 8m;
sendfile on;
tcp_nopush
on;
keepalive_timeout 60;
fastcgi_cache_path
/usr/local/nginx/fastcgi_cache levels=1:2
keys_zone=TEST:10m
inactive=5m;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 1638;
fastcgi_buffers 16 16k;
fastcgi_busy_buffers_size 16k;
fastcgi_temp_file_write_size 16k;
fastcgi_cache TEST;
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout
invalid_header http_500;
open_file_cache max=204800 inactive=20s;
open_file_cache_min_uses 1;
open_file_cache_valid 30s;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript
text/css application/xml;
gzip_vary on;
server
{
listen
80;
server_name
localhost;
index index.php index.htm;
root
/usr/wodm/;
location /status
{
stub_status on;
}
location ~
.*\.(gif|jpg|jpeg|png|bmp|swf|html|mp3|wma|wmv)$
{
expires 30d;
}
}
log_format access
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent
"$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /usr/local/nginx/logs/access.log access;
标准字符集
vi
/etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
SYSFONT="latarcyrheb-sun16"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
LANG="zh_CN.GB18030"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
打开文件数
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
vi /etc/pam.d/login
session required /lib/security/pam_limits.so
nginx 日志按天分割
vi nginx_log.sh
#!/bin/bash
logs_path="/usr/local/nginx/logs/"
pid_path="/usr/local/nginx/nginx.pid"
mv ${logs_path}access.log ${logs_path}access_$(date -d
"yesterday" +"%Y%m%d").log
kill -USR1 `cat ${pid_path}`
chmod 755 nginx_log.sh
crontab –e
0 0 * * * bash
/usr/local/nginx/nginx_log.sh
Tomcat memcache
tar xf libevent-1.4.11-stable.tar.gz
cd libevent-1.4.11-stable
./configure
make
make install
cd ../
tar xf memcached-1.4.5.tar.gz
cd memcached-1.4.5
./configure
make
make install
/usr/local/bin/memcached -d -m 10 -u root -l 192.168.1.113 -p
11211 -c 1024 -P /tmp/memcached.pid
Memcache+tomcat 共享session
后续计划尚未配置
LVS+NGINX+TOMCAT_集群实施操作记录.docx的更多相关文章
- LVS+Heartbeat 高可用集群方案操作记录
之前分别介绍了LVS基础知识和Heartbeat基础知识, 今天这里简单说下LVS+Heartbeat实现高可用web集群方案的操作说明. Heartbeat 项目是 Linux-HA 工程的一个组成 ...
- Haproxy+Heartbeat 高可用集群方案操作记录
之前详细介绍了haproxy的基础知识点, 下面记录下Haproxy+Heartbeat高可用web集群方案实现过程, 以加深理解. 架构草图如下: 1) 基本环境准备 (centos6.9系统) 1 ...
- 运维利器-ClusterShell集群管理操作记录
在运维实战中,如果有若干台数据库服务器,想对这些服务器进行同等动作,比如查看它们当前的即时负载情况,查看它们的主机名,分发文件等等,这个时候该怎么办?一个个登陆服务器去操作,太傻帽了!写个shell去 ...
- 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群
高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...
- kafka 基础知识梳理及集群环境部署记录
一.kafka基础介绍 Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特 ...
- Linux Cluster 基础之LVS调度算法与集群类型
Linux Cluster 基础之LVS调度算法与集群类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.LB Cluster 1>.什么是LB LB 集群是 load ...
- kubeadm安装kubernetes 1.13.1集群完整部署记录
k8s是什么 Kubernetes简称为k8s,它是 Google 开源的容器集群管理系统.在 Docker 技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提 ...
- Linux+.NetCore+Nginx搭建集群
本篇和大家分享的是Linux+NetCore+Nginx搭建负载集群,对于netcore2.0发布后,我一直在看官网的文档并学习,关注有哪些新增的东西,我,一个从1.0到2.0的跟随者这里只总结一句话 ...
- 实现基于LVS负载均衡集群的电商网站架构
背景 上一期我们搭建了小米网站,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法 ...
随机推荐
- 《FPGA全程进阶---实战演练》第九章 计数器要注意
本小节我们来做一个好玩的事情,就是计数器,还记得在做LED自加实验时我们就曾经提到过关于计数器的相关议题,那么这节我们就来讨论讨论. 探讨一下如下的问题:请用verilog记八个数的写法,分析这个可以 ...
- numpy reshape resize用法
https://docs.scipy.org/doc/numpy/reference/generated/numpy.resize.html a = np.zeros((100,28*28)) pri ...
- iPhone开发中,关于视图跳转的总结(转)
iPhone开发中,关于视图跳转的总结 iPhone开发中从一个视图跳到另一个视图有三种方法: 1. self.view addSubView:view .self.window addSubView ...
- InnoDB和MyISAM的区别与选择
MyISAM 性能(适合小项目,读快速)MyISAM 是MySQL中默认的存储引擎,比如适合新闻系统,读为主.InnoDB 事务或外键支持(适合大项目,高并发读写)活跃用户20多万时候,也能很轻松应付 ...
- SpringMVC系列(七)视图解析器和视图
在springmvc.xml里面配置视图解析器 <!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 --> <bean class="org ...
- windows下mysql密码忘了怎么办?【转】
前两天在windows的command命令行下,用mysqladmin导入过一些站上数据 结果悲催了,mysql.user的内容被改了,root上不了了,权限也变了. 结合了网络上的集中方法,终于成了 ...
- CI框架 -- 核心文件 之 Loader.php(加载器)
顾名思义,装载器就是加载元素的,使用CI时,经常加载的有: 加载类库文件:$this->load->library() 加载视图文件:$this->load->view() ...
- Linux语言设置修改乱码
1.system-config-language 命令语言改成英文.(安装yum install system-config-language) 如何系统安装后,使用的语言不是自己想要的.但是在图形 ...
- xml根据属性去重。如csprj去重
public static void distinct(string filePath) { //1.创建XML文档对象 XmlDocument doc = new XmlDocument(); // ...
- android中YUV转RGB的方法
在一个外国网站上看到一段YUV转RGB的程序很不错,根据维基上的知识,方法应该是没问题的,自己也用过了,效果没问题. 首先说一下android上preview中每一帧的信息都是YUV420的,或者叫N ...