分布式系统环境搭建

一、 系统架构3

二、 项目环境搭建3

1. 前端3

    1.1负载均衡3

    1.2 前端技术框架----Vue.js(开发环境搭建)3

        1.2.1 node.js安装3

        1.2.2 cnpm安装脚手架vue-cli5

        1.2.3 构建vue项目6

        1.2.4 项目启动6

2. 后台6

    2.1 tomcat服务器6

        2.1.1下载与安装6

        2.1.2 配置7

    2.2 Redis安装与配置7

        2.2.1 Redis安装7

        2.2.2 Redis配置8

3.数据库8

    3.1安装Mysql5.78

        3.1.1 卸载centos7自带的MariaDB8

        3.1.2 添加Mysql yum仓库9

        3.1.3 安装Mysql服务9

        3.1.4 mysql自启动配置9

        3.1.5其他配置9

    3.2 Mysql主从服务器配置10

        3.2.1 my.cnf配置10

        3.2.2 主服务器配置12

        3.2.3 从服务器配置13

    3.3 Mycat安装与配置14

        3.3.1 下载与安装14

        3.3.2 环境配置14

        3.3.3文件配置15

        3.3.4 mycat自启动配置15

三、 项目部署17

    1.前端打包17

    2. 后台打包18

    3. 项目部署19


一、系统架构

本系统的环境部署和配置主要分为三大块:前端,后端,数据库,图一所示

图一. 系统架构图

1. 负载均衡

开发和测试环境中,负载均衡由两台代理服务器,采用nginx+keepalived实现双机热备份和Web服务器的负载均衡。在生产环境中由医院提供的F5服务器做负载均衡。

2. Web服务器

两台Web服务器互为备份,同时实现负载均衡,用于部署系统的后端程序,采用Redis解决前端访问的session共享问题,安装Tomcat作为Web服务软件,采用Mycat作为数据库服务器读写分离的中间件。

3. 数据库服务器

数据库服务器采用双主从结构,从服务器的数据与主服务器同步,数据的写操作(增删改)均在主服务器上进行,两台主数据库服务器互为备份,数据库的读操作(查询)均在从数据库服务器上进行,系统数据读写业务量增大时,可扩展住、从服务器数量实现扩容,前端Web服务器同过Mycat的配置实现读写操作的负载均衡。

二、项目环境搭建

1. 前端

1.1负载均衡

生产环境系统中负载均衡由医院方提供F5服务器做负载均衡

1.2 前端技术框架----Vue.js(开发环境搭建)

1.2.1 node.js安装

1.进入Node.js官网:https://nodejs.org/en/,选择下载并安装Node.js(需较新版本)

2.验证Node.js是否安装好,在windows下,win+r召唤出运行窗口,输入cmd打开命令行窗口。输入node -v即可得到对应的Node.js版本。

3.安装cnpm

执行命令 

npm install -g cnpm --registry=https://registry.npm.taobao.or

使用npm的国内镜像(npm 国内镜像 https://npm.taobao.org/)cnpm 命令代替默认的npm命令,增加依赖包加载速度且避免资源限制

1.2.2 cnpm安装脚手架vue-cli

在命令行中运行如下命令,安装脚手架。图4所示

npm install -g @vue/cli

1.2.3 构建vue项目

在命令行中键入vue create demo (demo是项目名) 即可完成创建

1.2.4 项目启动

cd到demo(项目)目录,先执行cnpm install 安装依赖,然后执行npm run serve,即可启动项目,浏览器中输入localhost:8080出现以下页面说明启动成功。

2. 后台

2.1 tomcat服务器

2.1.1下载与安装

1.cd到/usr/local目录执行 如下命令下载tomcat压缩包(如图6所示)

wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.39/bin/apache-tomcat-8.5.39.tar.gz

2.执行如下命令,命令解压tomcat压缩包,完成安装。

tar -zxvf apache-tomcat-8.5.39.tar.gz

2.1.2 配置

1. 创建systemctl管理tomcat的配置文件 vim /lib/systemd/system/tomcat.service

  2. 配置文件样例, 图8所示。

图8. 配置文件样例

  3. 启动服务 

systemctl start tomcat.service

4. 查看服务状态 

systemctl status tomcat.service 

5. 开机启动 

systemctl enable tomcat.service 

重启之后再查看服务状态已经启动

(注意:由于系统架构采用两台服务器并实现负载均衡,所以两台服务器tomcat安装配置完全一致)

2.2 Redis安装与配置

提出问题:在分布式系统中需要使用多台服务器,用户在客户端第一次发送登录请求(假定一次登陆成功),nginx负载均衡分配到服务器1,服务器1中生成session,并且响应客户端,客户端中存储了此session。接下来用户再次发送请求,就会产生以下两种情况:

① nginx将请求分配给服务器1,服务器检测到有此用户的session,响应客户端;

② nginx将请求分配给服务器2,服务器检测不到此用户的session,无法响应客户端,此时就会报错。

即:一个请求,有时可以得到响应,有时得不到响应。

解决问题:采用redis实现session共享。实现原理如下图所示,用户登录之后会将session写入redis中,再次发送请求时,服务器2就会从客户端发送过来的session中获取sessionId,再用sessionId从redis中获取session。

2.2.1 Redis安装

1. 官网下载压缩包

wget http://download.redis.io/releases/redis-4.0.6.tar.gz

2. 解压

tar -zxvf redis-4.0.6.tar.gz

3. cd到redis-4.0.6目录 执行

make

redis-4.0.6目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下。

cd 到src目录下执行如下命令

make install

3. 下面启动redis服务-----以后台进程方式启dong修改redis.conf文件 daemonize no改为 daemonize yes

然后执行

./redis-server /usr/local/redis-4.0.6/redis.conf

2.2.2 Redis配置

1. 开机自启动

执行

vim /etc/systemd/system/redis-server.service

添加如下内容

[Unit]

Description=Redis Server Manager

After=syslog.target

After=network.target

[Service]

Type=simple

User=redis

Group=redis

PIDFile=/var/run/redis_6379.pid

ExecStart=/usr/local/redis/redis-server /usr/local/redis/redis.conf

ExecStop=/usr/local/redis/redis-cli shutdown

Restart=always

[Install]

WantedBy=multi-user.target

保存退出执行如下指令,完成开机自启配置

systemctl daemon-reload

systemctl start redis-server.service

systemctl enable redis-server.service

3.数据库

3.1安装Mysql5.7

3.1.1 卸载centos7自带的MariaDB

执行

rpm -qa|grep mariadb

rpm -e mariadb-libs-5.5.56-2.el7.x86_64 –nodeps

3.1.2 添加Mysql yum仓库

下载命令

curl -LO http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

下载后执行

yum localinstall mysql57-community-release-el7-11.noarch.rpm

3.1.3 安装Mysql服务

1. 执行命令完成安装

yum install mysql-community-server

3.1.4 mysql自启动配置

vim /etc/rc.local

添加service mysqld start即可

图12所示


图12 mysql自启动

3.1.5其他配置

1.修改密码

查到密码 grep 'temporary password' /var/log/mysqld.log

修改密码ALTER USER test@'%' IDENTIFIED BY '123456';

2. 开启远程连接端口

执行  firewall-cmd --zone=public --add-port=3306/tcp --permanent 开放3306端口

执行  firewall-cmd --reload 重启防火墙

执行  firewall-cmd --list-port 查看已开放的端口

3.2 Mysql主从服务器配置

主从关系说明:mysql服务器由两台主服务器(master1--71,master2--76)和两台从服务器(slave1--72,slave2--77)组成,master1与master2互为主从,slave1为master 1的从服务器, slave2为master 2的从服务器。

3.2.1 my.cnf配置

1. Master1 配置my.cnf文件 (/etc/my.cnf 下同),图14所示

图14 Master1 配置my.cnf

2. Master2的my.cnf配置,图15所示


图15. Master2 配置my.cnf

3. Slave1配置my.cnf文件,图16所示


图16. Slave1配置my.cnf文件

4. Slave2配置my.cnf文件,图17所示


图17 Slave2配置my.cnf文件

3.2.2 主服务器配置

1. master1配置

A. 查看master2状态 执行命令 show master status,图18所示。

图18. 查看master2状态

B. 执行配置命令,图19所示

change master to master_host='192.168.1.222', master_user='master2',master_password='123456',master_log_file='mysql_bin.000018',master_log_pos=154;

master_host是master1的主服务器ip

master2是master1的主服务器


图19.  master1配置

2. master2配置

A. 查看master1状态 执行命令 show master status,图20所示。

图20. maste1状态

B. 执行配置命令

change master to master_host=

'192.168.1.221', #master2的主服务器ip

master_user='master1', # master1是master2的主服务器

master_password='123456',

master_log_file='mysql_bin.000028',

master_log_pos=154;

图21. master2配置

3.2.3 从服务器配置

1. slave1配置(slave1和master2都是master1的从服务器,所以两者配置一样)图22. 所示

change master to master_host=

'192.168.1.221',

master_user='master1',

master_password='123456',

master_log_file='mysql_bin.000028',master_log_pos=154;


图22. slave1配置

2. slave2配置(slave2和master1都是master2的从服务器,所以两者配置一样)

执行配置命令(图23所示)

change master to master_host=

'192.168.1.222', #slave2的主服务器ip

master_user='master2',

master_password='123456',

master_log_file='mysql_bin.000018',

master_log_pos=154;

图23. slave2配置

3.3 Mycat安装与配置

3.3.1 下载与安装

1.首先进入/usr/local目录 cd /usr/local

2.从官网下载mycat(图24所示)

wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

3、解压mycat压缩包

tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

3.3.2 环境配置

1. mycat文件夹授权 

chmod -R 777 mycat

2.环境变量添加

vi /etc/profile

添加

export MYCAT_HOME=/usr/local/mycat

3. 使环境变量生效

source /etc/profile

4. 启动mycat

3.3.3文件配置

1. 配置server.xml (Path:  /usr/local/mycat/conf/server.xml)图25所示

图25. 配置server.xml

2. 配置 schema.xml  (path:  /usr/local/mycat/conf/schema.xml),图26所示

图26. 配置 schema.xml

3.3.4 mycat自启动配置

1. 创建systemctl管理mycat的配置文件 vim /lib/systemd/system/mycat.service

2. 配置文件样例,图27所示

图27. 配置文件样例

3. 启动服务 s

ystemctl start mycat.service

4. 查看服务状态

systemctl status mycat.service

5. 开机启动 

systemctl enable mycat.service

重启之后再查看服务状态已经启动

三、项目部署

1. 前端打包

在VSCode中打开终端,执行如下命令,编译完成之后根目录下会生成dist文件夹(图31所示),将dist更名为FlupPlatformWebpage,并在vue.config.js中配置生产环境目录,使其与包名相同,配置如下。

npm run build

module.exports = {

  publicPath: process.env.NODE_ENV === 'production'

    ? '/FlupPlatformWebpage/'

    : '/'

}

图31. 前端打包

2. 后台打包

首先在application.yml配置启动文件

spring:

  profiles:

    active: prod

然后在application-prod.yml配置文件中配置数据库连接及redis连接,详细配置如下

spring:

  datasource:

    url: jdbc:mysql://localhost:8066/yaxin?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8

    username: root

    password: Yaxin123456

    driver-class-name: com.mysql.jdbc.Driver

  redis:

    host: 133.0.5.65

    password: yaxin123456

    port: 6379

    database: 0

    timeout: 2400s

打开终端(terminal)cd到项目yaxin(module)目录,输入mvn clean install -DMaven.test.skip=true,编译完成之后会在yaxin目录下生成target目录,此目录下的FlupPlatformServer.war文件就是即将部署的war包,相关操作及配置如下图32所示。

图32. 后台打包

3. 项目部署

两个服务器都要部署

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,978评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,954评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,623评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,324评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,390评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,741评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,892评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,655评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,104评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,569评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,254评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,834评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,725评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,950评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,260评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,446评论 2 348

推荐阅读更多精彩内容