一、发布前准备工作
1、确认服务器资源。
硬件资源:cpu、内存、硬盘
软件资源:window,Linux,是32位 64位
网络资源:是否需要在一个机房,百兆网络,千兆网络
2、最终测试
开发人员,测试人员等全员参与
3、需要在Git上打tag
在Git上打包发布版本
4、Maven打war包
Maven打包命令:package
5、把数据库的结构和数据进行导出,做sql脚本
需要导出数据表和初始数据。
相关的资源也进行打包
6、需要编写发布文档
发布文档应该在发布前两天就开始编写
发布文档编写全员参与
7、准备回滚方案
服务器初始化
二、了解系统架构图
1、系统功能图
2、淘淘商城系统架构
3、网络拓扑图
4、系统部署
taotao-manager 2
taotao-manager-web 2
taotao-portal 4
taotao-sso 2
taotao-sso-web 2
taotao-search 2
taotao-search-web 2
taotao-item-web 2
taotao-cart 2
taotao-order 2
以上需要22台服务器,理论上最大的并发是3000左右
Mysql 2
Solr 7 (3台tomcat,4台solr)
Redis 6 (3主3从)
图片服务器 6 (两组,一组中一个tracker,连个storage)
Nginx 2
注册中心 3
Activemq 2
共需要50台服务器。
5、域名规划
只用申请一个一级域名即可
www.taotao.com taotao.com
三、使用jmeter测试商城首页简要示例
注意:jmeter相关文档软件在本博客资源文件中有
1、启动jmeter
打开bin目录下的jmeter.bat,启动如下
2、保存方案
3、创建线程组
线程组用来模拟用户的并发访问。
4、创建 http 请求采样
5、添加监听报告
6、启动
7、查看结果
(1)、聚合报告
(2)、表格查看结果
最新样本:他是代表时间的,表示服务器响应最后一个请求的时间。
偏离 : 服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。
四、使用高可用架构一:使用keepalived+nginx实现主备
1、机器情况
机器一(主):192.168.0.48
机器二(备):192.168.0.49
虚拟IP:192.168.0.55
2 台机器均安装了Nginx,并且Nginx的配置完全一致。
2、整体架构
3、主备切换原理
4、主机配置文件
! Configuration File for keepalived
#全局配置
global_defs {
notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #指定发件人
#smtp_server 192.168.200.1 #指定smtp服务器地址
#smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_instance VI_1 {
state MASTER #标示状态为MASTER 备份机为BACKUP
interface eth0 #设置实例绑定的网卡
virtual_router_id 51 #同一实例下virtual_router_id必须相同
priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 8888
}
virtual_ipaddress { #设置vip
192.168.0.55 #可以多个虚拟IP,换行即可
}
}
5、备机配置
! Configuration File for keepalived
#全局配置
global_defs {
notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #指定发件人
#smtp_server 192.168.200.1 #指定smtp服务器地址
#smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_instance VI_1 {
state BACKUP #标示状态为MASTER 备份机为BACKUP
interface eth0 #设置实例绑定的网卡
virtual_router_id 51 #同一实例下virtual_router_id必须相同
priority 99 #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 8888
}
virtual_ipaddress { #设置vip
192.168.0.55 #可以多个虚拟IP,换行即可
}
}
五、高可用架构二:使用keepalived+nginx实现双主热备
1、机器情况
机器一(主):192.168.0.48
机器二(备):192.168.0.49
虚拟IP:192.168.0.55
虚拟IP:192.168.0.56
2 台机器均安装了Nginx,并且Nginx的配置完全一致。
2、整体架构
3、主备切换原理
4、主机配置
! Configuration File for keepalived
#全局配置
global_defs {
notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #指定发件人
#smtp_server 192.168.200.1 #指定smtp服务器地址
#smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh" ##监控脚本
interval 2 ##时间间隔,2秒
weight 2 ##权重
}
vrrp_instance VI_1 {
state MASTER #标示状态为MASTER 备份机为BACKUP
interface eth0 #设置实例绑定的网卡
virtual_router_id 51 #同一实例下virtual_router_id必须相同
priority 150 #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 8888
}
virtual_ipaddress { #设置vip
192.168.0.55 #可以多个虚拟IP,换行即可
}
track_script {
check_nginx #监控脚本
}
}
vrrp_instance VI_2 {
state BACKUP #标示状态为MASTER 备份机为BACKUP
interface eth0 #设置实例绑定的网卡
virtual_router_id 52 #同一实例下virtual_router_id必须相同
priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 8888
}
virtual_ipaddress { #设置vip
192.168.0.56 #可以多个虚拟IP,换行即可
}
track_script {
check_nginx #监控脚本
}
}
5、备机配置
! Configuration File for keepalived
#全局配置
global_defs {
notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #指定发件人
#smtp_server 192.168.200.1 #指定smtp服务器地址
#smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh" ##监控脚本
interval 2 ##时间间隔,2秒
weight 2 ##权重
}
vrrp_instance VI_1 {
state BACKUP #标示状态为MASTER 备份机为BACKUP
interface eth0 #设置实例绑定的网卡
virtual_router_id 51 #同一实例下virtual_router_id必须相同
priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 8888
}
virtual_ipaddress { #设置vip
192.168.0.55 #可以多个虚拟IP,换行即可
}
track_script {
check_nginx #监控脚本
}
}
vrrp_instance VI_2 {
state MASTER #标示状态为MASTER 备份机为BACKUP
interface eth0 #设置实例绑定的网卡
virtual_router_id 52 #同一实例下virtual_router_id必须相同
priority 150 #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 8888
}
virtual_ipaddress { #设置vip
192.168.0.56 #可以多个虚拟IP,换行即可
}
track_script {
check_nginx #监控脚本
}
}
六、负载均衡架构一:使用lvs+nginx实现负载均衡
1、架构图
2、配置Director Server
(1)、在eth0上绑定虚拟ip
ifconfig eth0:0 192.168.0.57 broadcast 192.168.0.57 netmask 255.255.255.255 up
此处在eth0设备上绑定了一个虚拟设备eth0:0,同时设置了一个虚拟IP是192.168.0.57,然后指定广播地址也为192.168.0.57,需要特别注意的是,这里的子网掩码为255.255.255.255。
(2)、添加路由规则
route add -host 192.168.0.57 dev eth0:0
(3)、启用系统的包转发功能
echo "1" >/proc/sys/net/ipv4/ip_forward
参数值为1时启用ip转发,为0时禁止ip转发。其实在DR模式中,开启系统的包转发功能不是必须的,而在NAT模式下此操作是必须的。
(4)、清除原有转发规则
ipvsadm –C
(5)、添加虚拟IP规则
ipvsadm -A -t 192.168.0.57:80 -s rr
(6)、在虚拟IP中添加服务规则
ipvsadm -a -t 192.168.0.57:80 -r 192.168.0.48:80 -g
ipvsadm -a -t 192.168.0.57:80 -r 192.168.0.49:80 –g
在新加虚拟IP记录中添加两条新的Real Server记录,并且指定LVS 的工作模式为直接路由模式。
(7)、重启LVS服务
ipvsadm
3、配置Real Server
在lvs的DR和TUn模式下,用户的访问请求到达真实服务器后,是直接返回给用户的,而不再经过前端的Director Server,因此,就需要在每个Real server节点上增加虚拟的VIP地址,这样数据才能直接返回给用户。
(1)、在回环设备上绑定了一个虚拟IP地址
ifconfig lo:0 192.168.0.57 broadcast 192.168.0.57 netmask 255.255.255.255 up
/sbin/route add -host 192.168.0.57 dev lo:0
(2)、设置参数
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集群测试之安装配置nginx
1、安装gcc环境
[root@localhost ~]# yum install -y gcc-c++
2、安装Nginx依赖的环境
(1)、安装nginx所依赖的pcre库
[root@localhost ~]# yum install -y pcre-devel
(2)、安装nginx所依赖的zlib库
[root@localhost ~]# yum install -y zlib-devel
3、上传nginx压缩包到Linux系统中并解压
4、进入nginx目录,进行编译安装
(1)、设置安装参数
[root@localhost nginx-1.7.7]# ./configure --prefix=/usr/local/nginx/
设置成功效果
(2)、编译
[root@localhost nginx-1.7.7]# make
(3)、安装
[root@localhost nginx-1.7.7]# make install
(4)、启动nginx,查看进程,浏览器访问
发现不能访问,需要关闭Linux防火墙
八、部署项目,进行集群测试
1、以taotao-manager-web和taotao-manager服务为例进行测试
2、删除已有的jdk,安装新的jdk
(1)、删除原有的jdk
使用命令查看是否安装jdk
[root@localhost sbin]# rpm -qa | grep java
已经安装了openjdk,需要卸载
[root@localhost sbin]# rpm -e java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64 --nodeps
[root@localhost sbin]# rpm -e java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64 --nodeps
卸载之后再次确认是否删除完全
(2)、安装新的jdk
详见:http://blog.csdn.net/wingzhezhe/article/details/52664236
3、在192.168.37.140上安装两个tomcat,并修改端口号
4、将taotao-manager-web项目打包并上传到140服务器的两个tomcat的webapps下
注意:需要将webapps下的ROOT下的目录全部删除,将taotao-manager-web上传到ROOT下
5、解压taotao-manager-web.war
[root@localhost ROOT]# jar -xf taotao-manager-web.war
6、复制一份tomcat到tomcat所在目录,并改名,修改端口号
7、启动tomcat,访问测试
8、配置nginx集群
(1)、修改Nginxd的配置文件nginx.conf
#配置集群信息
upstream taotao-manager-web {
server 192.168.37.140:8080; #此处配置的是每台服务器的ip地址+端口号
server 192.168.37.140:8081;
}
server {
listen 80;
server_name manager.taotao.com; #此处配置的是host文件中对应的192.168.37.140的ip对应的域名
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
#使用前面配置的集群
proxy_pass http://taotao-manager-web; #此处配置的是集群信息的名字,http://协议不可以省略
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
(2)、重启nginx服务
(3)、修改宿主机(本地电脑)的hosts
(4)、浏览器访问