nginx+tomcat+memcached集群安装配置操作指导书.docx
《nginx+tomcat+memcached集群安装配置操作指导书.docx》由会员分享,可在线阅读,更多相关《nginx+tomcat+memcached集群安装配置操作指导书.docx(36页珍藏版)》请在冰豆网上搜索。
nginx+tomcat+memcached集群安装配置操作指导书
Nginx+Tomcat+Memcached+Mysql
集群安装配置操作指导书
拟制:
Preparedby
杨机智
日期:
Date
2015-1-14
审核:
Reviewedby
日期:
Date
审核:
Reviewedby
日期:
Date
批准:
Grantedby
日期:
Date
修订记录Revisionrecord
日期
Date
修订版本Revisionversion
修改描述
changeDescription
作者
Author
2015-1-14
初稿完成
杨机智
目录TableofContents
1集群组网7
2Nginx安装及配置7
Nginx介绍7
Nginx安装8
Nginx启动、关闭、重启9
3Tomcat安装10
Tomcat安装步骤10
4Memcached安装10
Memcached介绍10
Linux下Memcached安装步骤10
Memcached启动和关闭11
Memcached状态查看12
5集群配置12
Nginx负载均衡配置12
Tomcat的Session共享配置13
查看集群状态14
6常见问题解决方法15
执行patch命令时提示patch:
commandnotfound15
现象描述15
原因分析15
处理方法15
出现错误13:
Permissiondenied)whileconnectingtoupstream,client…16
现象描述16
原因分析16
处理方法16
表目录ListofTables
表1XX表Table1XX3
图目录ListofFigures
图1XX图Figure1XX3
Nginx+Tomcat+Memcached+Mysql集群安装配置操作指导书
关键词Keywords:
Nginx,Tomcat,Memcached,mysql,集群
摘要Abstract:
本文介绍了Nginx+Tomcat+Memcached集+Mysql集群的安装与配置
缩略语清单Listofabbreviations:
Abbreviations缩略语
Fullspelling英文全名
Chineseexplanation中文解释
1
集群组网
集群组网说明:
Nginx部署在前端,作为集群的负载均衡器,配置双网卡,分别连接内外网。
Tomcat服务器集群部署在内网,不与外网直接连接,以避免遭受外部攻击。
Tomcat服务器的session通过Memcached服务器进行共享,保证某台服务器挂掉以后,能够正常的进行故障转移。
2Nginx安装
2.1Nginx介绍
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。
由俄罗斯的程序设计师IgorSysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:
Рамблер)使用。
其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:
新浪、网易、腾讯等。
Nginx作为负载均衡服务器:
Nginx既可以在内部直接支持Rails和PHP程序对外进行服务,也可以支持作为HTTP代理服务器对外进行服务。
Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好很多。
2.2Nginx安装
由于Nginx本身的健康检测不是太好用,如果后端服务器宕掉的话nginx是不能把这台realserver踢出upstream的,所以还会有请求转发到后端的这台realserver上面去,虽然nginx可以在localtion中启用proxy_next_upstream来解决服务故障转移,但这种方式每次还是会先把请求转发给这台服务器的,等待超时或者其他错误再转发给别的服务器,这样就浪费了一次转发,同时响应的比较慢。
目前比较流行的做法是借助淘宝技术团队开发的nginx模快补丁nginx_upstream_check_module来检测后方Realserver的健康状态,该补丁可以动态维护后端RealServer列表。
加补丁的Nginx在CentOs下的安装步骤:
首先去这里下载nginx健康检测模块yaoweibin/nginx_upstream_check_module
比如下的是
下面是nginx打上健康检测模块补丁的安装步骤:
#wgetdownload/
#tar-xzvftar–xzvf
#cd
#patch-p1
注:
假设安装包都放在/software目录下,补丁需要选择与nginx版本对应的版本,比如以上版本的nginx,补丁为
#./configure--add-module=/software/nginx_
#make
#makeinstall
注:
提示patch:
commandnotfound解决方法
ubuntu系统就sudoapt-getinstallpatch
centos/redhat就 yuminstallpatch
2.3Nginx启动、关闭、重启
采用源码安装方式,安装成功后Nginx安装目录在/usr/local/nginx目录下
启动命令:
#cd/usr/local/nginx/sbin
#./nginx
启动后通过添加–s参数来进行关闭、重启等的控制
语法:
nginx-ssignal
stop —fastshutdown
quit —gracefulshutdown
reload —reloadingtheconfigurationfile
reopen —reopeningthelogfiles
注:
如果修改了nginx的配置文件,请用nginx–sreload,这样服务不会中断,不会影响到客户端访问
关闭命令:
#cd/usr/local/nginx/sbin
#./nginx–sstop
重启命令:
#cd/usr/local/nginx/sbin
#./nginx–sreload
3JDK安装
步骤1:
到oracle官网下载JDK安装包
步骤2:
是一个自解压文件,不过解压后的文件是jdk-6u11-linux-i586-rpm包
#chmod+x
#./
步骤3:
执行rpm命令进行安装
#rpm-ivh
4Tomcat安装
Tomcat安装比较简单,到下载相应的版本的包,然后解压压缩包即可。
CentOs下的安装步骤如下:
#tar–zxvfconfigure –prefix=/usr/local
#make
#makeinstall
步骤3:
安装Memcached
#tar-zxvf ./configure --with-libevent=/usr/local
#make
#makeinstall
注:
安装完成后会把memcached放到/usr/local/memcached
步骤4:
检查安装是否成功
#ls-al/usr/local/memcach*
成功的话,会输出一些相关信息
步骤5:
设置防火墙
vi /etc/sysconfig/iptables
把下面这行加进去
-A RH-Firewall-l-INPUT -p tcp -m tcp --dport 11211 -j ACCEPT
注:
将memcached加入到防火墙允许访问规则中
service iptables restart
4.1Memcached启动和关闭
启动:
./memcached-d-m128-p11211-uroot
关闭:
ps-ef|grepmemcached.
Connectedtolocalhost.
Escapecharacteris'^]'.
stats
STATpid3512
STATuptime241980
STATtime91
STATversionlibeventpointer_size32
STATrusage_user
.......
连接到memcached之后,输入stats再按回车,即可获得包括资源利用率在内的各种信息;此外输入“statsslabs”或“statsitems”还可以获得关于缓存记录的信息。
结束程序输入“quit”
注:
centos默认没有telnet,需要按如下方法自己安装
#yuminstalltelnet
#yuminstalltelnet-server
#chkconfigtelneton
#servicexinetdrestart
5集群配置
5.1Nginx负载均衡及健康检测配置
按照如下内容修改/usr/local/nginx/conf/文件
http{
upstreamcluster{
#simpleround-robin
#RealServer的IP及端口
server:
80;
server:
80;
#健康检测的策略
checkinterval=5000rise=1fall=3timeout=4000;
#checkinterval=3000rise=2fall=5timeout=1000type=ssl_hello;
#checkinterval=3000rise=2fall=5timeout=1000type=http;
#check_http_send"HEAD/HTTP/\r\n\r\n";
#check_http_expect_alivehttp_2xxhttp_3xx;
}
server{
listen80;
location/{
proxy_pass;
}
#设置查看集群状态的URL
location/status{
check_status;
access_logoff;
allow;###允许某台机器可以查看状态
denyall;
}
}
}
5.2Tomcat的Session共享配置
使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单。
但这个方案的效率比较低,在大并发下表现并不好。
比较好的方式是利用memcached把多个tomcat的session集中管理,前端再利用nginx负载均衡和动静态资源分离,在兼顾系统水平扩展的同时又能保证较高的性能。
Tomcat的session复制同步使用第三方的memcache-session-manager,配置步骤如下:
步骤1:
到Maven库搜索并下载如下jar包,然后放至Tomcat的\lib目录下:
注:
tomcat6和7使用不同msm支持包:
和,只可选一,否则启动报错
步骤2:
修改\conf\文件,添加如下红色部分
memcachedNodes="n1:
:
11211"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass=""/>
…………………
5.3查看集群状态
通过访问,即可查看集群各节点的状态。
5.4集群启动关闭
集群启动请按照如下顺序进行:
a.启动Memcached
b.启动Tomcat
c.启动Nginx
集群关闭请按照如下顺序进行:
a.关闭Nginx
b.关闭Tomcat
c.关闭Memcached
增加服务器节点:
a.安装部署好Tomcat
b.启动Tomcat
c.增加该服务器
d.使用./nginx–sreload重新加载配置文件
6Mysq集群配置
6.1部署说明
Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。
主要功能:
同步复制
真正的multi-master,即所有节点可以同时读写数据库
自动的节点成员控制,失效节点自动被清除
新节点加入数据自动复制
真正的并行复制,行级
用户可以直接连接集群,使用感受上与MySQL完全一致
优势:
因为是多主,所以不存在Slavelag(延迟)
不存在丢失交易的情况
同时具有读和写的扩展能力
更小的客户端延迟
技术:
Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galeralibrary通讯,特别针对MySQL开发了wsrepAPI。
Xtrabackup进行InnoDB数据备份,支持在线热备份(备份时不影响数据读写)。
并有效的解决死锁,非阻塞。
方案总览:
三台mysql服务器,分别部署带wsrep插件的mysql。
分别安装Xtrabackup、Galera等工具
Mysql名称
IP地址
Node1
Node2
Node3
6.2安装前准备
6.2.1卸载自带mysql
1.步骤一
#yumremovemysqlmysql-servermysql-libscompat-mysql51
#rm-rf/var/lib/mysql
#rm/etc/
2.步骤二
注意:
查看是否还有mysql软件,有的话继续删除:
rpm-qa|grepmysql
6.2.2安装mysql集群(官网MariaDBGaleraCluster方案)
6.2.3添加mariaDByum资源
步骤1、进入yum资源目录
#cd/etc/步骤2、编辑repo文件
#vi
添加mysql资源库
模板如下:
[mariadb]
name=MariaDB
baseurl===1
注baseurl解释:
version:
mariadb版本号,例如,.
package:
发布版本.例如,centos6-x86和centos6-amd64
参考示例:
[mariadb]
name=MariaDB
baseurl===1
6.2.4安装galera
#yuminstallgalera
6.2.5安装
#yuminstallMariaDB-clientMariaDB-Galera-server
6.2.6编辑
#vi/etc/
*Galera-relatedsettings
#
[galera]
#Mandatorysettings
wsrep_provider=/usr/lib64/galera/
wsrep_provider_options="=300M;=1G"
wsrep_cluster_name="my_wsrep_cluster"
#wsrep_cluster_address=",,"
wsrep_cluster_address=","
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_node_name="node2"
wsrep_node_address=""
wsrep_sst_method=rsync
wsrep_sst_auth=cluster:
media
#bind-address=
#
#Optionalsetting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0
#thisisonlyforembeddedserver
按照如上配置,编辑后保存。
注意:
配置项解释
属性名
含义
server-id
MySQL服务器的ID,必须是唯一的
wsrep_node_name
wsrep节点的ID,必须是唯一的
wsrep_provider
包地址
wsrep_cluster_address
集群中的其他节点地址,可以使用主机名或IP
wsrep_cluster_address=,mysqlnode3
wsrep_node_address
本机节点地址,可以使用主机名或IP
wsrep_sst_donor
一个逗号分割的节点串作为状态转移源,比如wsrep_sst_donor=node5,node3,如果node5可用,用node5,不可用用node3,如果node3不可用,最后的逗号表明让提供商自己选择一个最优的
wsrep_sst_method
同步sst方法。
目前总计有四种方法
mysqldump:
慢(除了小数据集),但是测试充分。
rsync:
大型数据集上快。
rsync_wan:
与rsync相同,网络用量小。
xtrabackup:
非常快,几乎非阻塞方法,基于xtrabackupPercona的工具。
wsrep_sst_auth
xtrabackup使用的用户名密码,本例中使用wsrep_sst_auth=cluster:
media
wsrep_cluster_name
galera集群的名字,必须是统一的
6.2.7启动mysql
步骤1、启动并配置第一台mysql
#servicemysqlstart–-wsrep-new-cluster(每次启动集群的第一个节点要加该参数)
提示启动成功后,登录mysql
注:
如果登录需要密码,请使用如下语句查看
#cat/root/.mysql_secret
#TherandompasswordsetfortherootuseratSatFeb1412:
45:
212015(localtime):
QSwBMLBlVBBnejw5
其中QSwBMLBlVBBnejw5为第一次初始化mysql的随机密码
用这个密码登录后,需要重新设置mysql密码。
密令如下:
mysql>SETPASSWORD=PASSWORD('media');
目前的mysql密码为media,重启mysql后密码生效。
步骤2、启动余下结点
#servicemysqlstart
步骤3、配置mysql结点间访问权限
首先登录mysql,然后执行
#GRANTALLON*.*TO'cluster'@'%'IDENTIFIEDBY'media';
#GRANTALLON*.*TO'cluster'@'localhost'IDENTIFIEDBY'media';
#GRANTALLON*.*TO'root'@'';
#GRANTALLON*.*TO'root'@'';
步骤4、通过查看4567端口确认集群是否启动:
#netstat-plantu|grepmysqld
步骤5、查询galera插件是否已启用:
#mysql-e"SHOWstatusLIKE'wsrep_ready'"–p
注意:
ON表示已经启动成功
#mysql-e"SHOWVARIABLESLIKE'wsrep_cluster_address'"-p
#mysql-e"SHOWSTATUSLIKE'wsrep%';"-p
注意:
wsrep_cluster_size表示,已经成功连接的mysql主机个数。
Wsrep_incoming_address表示连接成功的主机地址和端口
6.2.8安装Xtrabackup(防止锁表,非阻塞)
步骤1、进入yum资源目录
#cd/etc/步骤2、编辑repo文件
#vi
保存如下内容:
#Name:
PerconaRPMRepository
#URL:
=CentOS$releasever-Percona
baseurl==1
gpgkey==1
步骤3、安装Xtrabackup
#yuminstallxtrabackup
6.2.9集群维护
1.启动集群
#servicemysqlstart
2.停止集群
#servicemysqlstop
3.状态查看
#servicemysqlstatus
4.查看mysql进程
#ps–ef|grepmysql
7AutoMySQLBackup热备份配置
7.1下载AutoMySQLBackup
projects/automysqlbackup/
7.2安装AutoMySqlBackup
步骤一、创建安装目录
把下载的文件拷贝到/root/下面
在/usr/local下面新建一个automysqlbackup文件夹,并进入这个文件夹
#cd/usr/local
#mkdirautomysqlbackup
# cdautomysqlbackup
步骤二、解压缩安装
#tar-xzvf/root/./
注意:
中途会有两个询问配置文件安装目录的地方,之间回车就好
安装完以后会有提示信息,告诉你如果不是当前用户下使用这个命令要怎么办:
步骤三、修改配置文件
#cd/etc/autumysqlbackup
#vi
(1)、文件里有一些基本的配置信息,比如连接mysqlserver的用户名、密码、IP地址的。
#UsernametoaccesstheMySQLserver.dbuser
CONFIG_mysql_dump_username='root'
#PasswordtoaccesstheMySQLserver.password
CONFIG_mysql_dump_password='1234'
#Hostname(orIPaddress)ofMySQLserverlocalhost
CONFIG_mysql_dump_host='localhost'
(2)、配置backup存放路径
#Backupdirectorylocation/backups
CONFIG_b