部署集群应用系统-安装笔记(1+X云计算题)
这套系统,网页源码,软件包均来自1+x云计算
实验拓扑:
本次实验大部分部署将用Ansible playbook脚本方式部署,脚本为个人尝试编写,有待改进的地方还有很多。
主要是我比较懒….懒得一台一台敲,大部分就一起用ansible做掉了
实验依旧在Openstack云平台上完成,创建十台CentOS7.2实例,配置规划好浮动IP,确保网络通畅。
系统环境配置
既然使用ansible,那么提前copy好主机的ssh密钥,规划好Hosts主机组,以下是我个人做实验的规划
实验的主机有十台,所以用ansible批量去解决一些基础配置,
包括关闭防火墙和selinux啊(我这里实例镜像已经预先将这些关掉了,但可以写进脚本),
主机名的配置,
Hosts文件的配置
和
yum源文件的配置我采用分发copy文件的方式
所有系统的yum源我配置为openstack上的ftp目录下
运行脚本完成所有基础配置
[root@server ansible]# ansible-playbook sys_setup.yml
- Zookeeper & Kafka 集群部署
=========================
Zookeeper和kafka集群的配置,单独写在了前两篇文档中,我就bu多做赘述了,
直接下楼冲杯咖啡,回来就完事
#运行部署脚本
[root@server ansible]# ansible-playbook zookeeper.yml
#测试服务:执行查询zookeeper状态
[root@server ansible]# ansible zookeepers -m shell -a '/usr/local/zookeeper/bin/zkServer.sh status'
脚本内容
测试
#运行部署kafka脚本
[root@server ansible]# ansible-playbook kafka.yml
#测试服务:查看9092端口监听
[root@server ansible]# ansible zookeepers -m shell -a 'ss -ntlp|grep 9092'
脚本内容
测试
- Mariadb数据库主从部署
=================
数据库的部署,这里也整理成了脚本
#运行部署脚本
[root@server ansible]# ansible-playbook mariadb_setup.yml
#测试服务:查询从节点状态
[root@server ansible]# ansible db_slave -m shell -a 'mysql -uroot -p123456 -e"show slave status\G"'
脚本内容
测试:slave的运行状态都为yes
在提供的gpmall软件包中,有gpmall.sql数据库文件
登录数据库节点(主从数据同步了,在任意节点都可)
#创建数据库gpmall,执行导入数据
create database gpmall;
use gpmall;
source gpmall.sql;
- Mycay读写分离部署
==============
之前做mycat的时候写的是shell脚本安装配置,因为mycat只做一台部署,这次稍作修改同样用shell脚本
**注意:**mycat服务器上的/etc/hosts文件配置是否正确,配置文件中读写数据库ip地址是否正确
Shell脚本,安装步骤可以在前面的文章看到
在本次实验中/usr/local/mycat/conf/schema.xml文件需要修改
schema name为"gpmall",
checkSQLschema为"false",
dataNode中使用的database设置为"gpmall"
#/usr/local/mycat/conf/schema.xml修改如下
<schema name="gpmall" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
……..
<dataNode name="dn1" dataHost="localhost1" database="gpmall" />
#/usr/local/mycat/conf/server.xml修改如下
……<property name="schemas">gpmall</property>…..
yml脚本如下,内容全写在shell脚本里了,直接copy运行就可以
#运行部署脚本
[root@server ansible]# ansible-playbook mycat_setup.yml
#测试服务:mysql客户端登录查询mycay服务器,如图一台为W写入,一台为R读取
[root@server ansible]# mysql -uroot -p123456 -P9066 -h192.168.100.7 -e'show @@datasource;'
- Redis服务配置
============
yml脚本如下
#运行部署脚本
[root@server ansible]# ansible-playbook redis_setup.yml
#测试服务:查询6379端口是否正常监听
[root@server ansible]# ansible redis -m shell -a 'ss -ntlp|grep 6379'
- Jar后端包部署
==========
软件包中的四个jar文件为后端运行包,需要在jar1,jar2两台服务器上同时部署后端包
yml脚本如下
这里特别要注意的是,两台jar服务器上的hosts映射文件需要写成如下固定格式名称,如xx.mall
因此脚本又写了再从本地分发提前写好的jar_hosts文件到/etc/hosts
#运行部署脚本
[root@server ansible]# ansible-playbook jar_setup.yml
#测试安装:查询服务器的端口监听8082,8081
[root@server ansible]# ansible jars -m shell -a 'ss -ntlp|grep 8081 && ss -ntlp|grep 8082'
若启动有问题,建议开启输出一个包一个包的去执行
nohup java -jar gpmall-shopping-0.0.1-SNAPSHOT.jar &
nohup java -jar gpmall-user-0.0.1-SNAPSHOT.jar &
nohup java -jar shopping-provider-0.0.1-SNAPSHOT.jar &
nohup java -jar user-provider-0.0.1-SNAPSHOT.jar &
- Nginx服务器配置
=============
最后一台nginx为前端网页服务器,基本的系统环境已经第一步通过脚本搞定了,
这里就直接上手敲命令配置了
#安装nginx服务
[root@192 ~]# yum -y install nginx
#清空nginx默认网页,将软件包中的dist文件夹下所有内容移动到目录下
[root@192 ~]# rm -rf /usr/share/nginx/html/*
[root@192 ~]# cp -r dist/* /usr/share/nginx/html/
#修改nginx的配置文件
[root@192 ~]# vim /etc/nginx/conf.d/default.conf
#在顶部添加以下负载均衡配置,server后的ip替换为自己的两台jar的ip地址
upstream myuser {
server 192.168.100.11:8082;
server 192.168.100.12:8082;
ip_hash;
}
upstream myshopping{
server 192.168.100.11:8081;
server 192.168.100.12:8081;
ip_hash;
}
upstream mycashier{
server 192.168.100.11:8083;
server 192.168.100.12:8083;
ip_hash;
}
#在server{..}段配置中添加以下内容,为访问后端jar服务器做代理
location /user {
proxy_pass http://myuser;
}
location /shopping {
proxy_pass http://myshopping;
}
location /cashier {
proxy_pass http://mycashier;
}
配置完成后重启nginx服务,查看80端口是否正常监听
[root@192 ~]# systemctl restart nginx
[root@192 ~]# ss -ntlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 *:* users:(("nginx",22946,6),("nginx",22944,6))
访问测试
打开浏览器访问nginx的ip地址
访问商场首页如图
点击右上角即可登录,测试用户test\test
可以在网站中查看商品详情
点击立即下点可进入下单页面
部署集群应用系统到此结束
原本是可以将所有都写在yml中,但是我想一个一个服务的分开写下次再做的时候更加明了
tmd十台机子有点烦人的呢,虽然我大部分操作都自动化部署了
没有什么比做完实验直接全选删除云主鸡更爽的事情了
[1]: