SSM综合项目实战(TTSC) -- day14 项目部署、MyCat
2017-11-01 20:52
561 查看
一、发布前准备工作
1、确认服务器资源。
硬件资源:cpu、内存、硬盘软件资源:window,Linux,是32位 64位
网络资源:是否需要在一个机房,百兆网络,千兆网络
2、最终测试
开发人员,测试人员等全员参与3、需要在Git上打tag
在Git上打包发布版本4、Maven打war包
Maven打包命令:package5、把数据库的结构和数据进行导出,做sql脚本
需要导出数据表和初始数据。相关的资源也进行打包
6、需要编写发布文档
发布文档应该在发布前两天就开始编写发布文档编写全员参与
7、准备回滚方案
服务器初始化二、了解系统架构图
1、系统功能图
2、淘淘商城系统架构
3、网络拓扑图
4、系统部署
taotao-manager 2taotao-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服务器地址 fe9a #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上绑定虚拟ipifconfig 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)、浏览器访问
相关文章推荐
- SSM综合项目实战(TTSC) -- day12 购物车
- SSM综合项目实战(TTSC) -- day07 RESTful,HttpClient,单点登录
- SSM综合项目实战(TTSC) -- day02 Dubbo注册中心,通用Mapper,分页插件
- SSM综合项目实战(TTSC) -- day03 Nginx,类目选择,新增商品
- SSM综合项目实战(TTSC) -- day09 Solr,搜索系统
- SSM综合项目实战(TTSC) -- day05 搭建门户,内容管理,大广告位
- SSM综合项目实战(TTSC) -- day04 图片上传、商品列表
- SSM综合项目实战(TTSC) -- day08 单点登录,注册登录,jsonp
- SSM综合项目实战(TTSC) -- day01 项目介绍、工程搭建
- SSM综合项目实战(TTSC) -- day13 订单、定时器Quartz
- java项目实战,企业级电商开发部署,支付宝线上部署ssm
- 【实战\Java SSM快速开发仿慕课网在线教育平台项目笔记】第1章 课程项目整体概述(整体介绍及Eclipse,Maven,新浪SAE软件平台介绍)
- SSM框架实战系列之一_项目简介及所需软件
- 【ssm个人博客项目实战08】博客的分页显示以及模糊查询,删除。
- 实战篇:基于SSM的秒杀系统之项目介绍
- 04(maven+SSH)网上商城项目实战之maven热部署
- 03(maven+SSH)网上商城项目实战之maven热部署
- SSM项目实战(二)--高并发秒杀系统之Service层
- 【ssm个人博客项目实战03】左侧导航菜单功能实现
- SSH综合项目实战(快递) -- day08 邮箱激活、用户登录、city-picker