SSM综合项目实战(TTSC) -- day14 项目部署、MyCat

一、发布前准备工作

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)、浏览器访问





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值