当前位置: 首页 > 工具软件 > gpmall > 使用案例 >

gpmall集群构建四:gpmall集群部署

赵光赫
2023-12-01

1. 规划节点

使用Mycat读写分离数据库作为应用系统的数据库后端,使用ZooKeeper集群,Kafka集群提供应用系统调度服务,使用Reids提供应用系统消息队列服务,节点规划见表4-9-1。

表4-9-1 节点规划

IP

主机名

节点

172.16.51.6

mycat

Mycat中间件服务节点

172.16.51.18

db1

MariaDB数据库集群主节点

172.16.51.30

db2

MariaDB数据库集群从节点

172.16.51.23

zookeeper1

集群节点

172.16.51.32

zookeeper2

集群节点

172.16.51.41

zookeeper3

集群节点

172.16.51.29

redis

消息队列服务节点

1. 修改数据库配置

(1)新建gpmall数据库

将提供的gpmall.sql数据库文件上传至数据库db1节点的/root目录下。登录db1节点,使用数据库用户名为root,密码为123456登录数据库,创建库gpmall,将提供的gpmall.sql文件导入到gpmall库中,命令如下:

[root@db1 ~]# mysql -uroot -p123456

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 19

Server version: 10.3.18-MariaDB-log MariaDB Server



Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.



Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.



MariaDB [(none)]> create database gpmall;

Query OK, 1 row affected (0.000 sec)



MariaDB [(none)]> use gpmall

Database changed

MariaDB [gpmall]> source /root/gpmall.sql

Query OK, 0 rows affected (0.000 sec)

Query OK, 0 rows affected (0.000 sec)

…

gpmall.sql文件导入完毕后,退出数据库。

(2)修改Mycat配置

登录Mycat节点,修改schema.xml配置文件,文件位置在/usr/local/mycat/conf目录下,修改schema.xml文件内容如下,将schema name修改为gpmall,true修改为false,database修改为gpmall。

[root@mycat conf]# cat schema.xml

<?xml version="1.0"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema xmlns:mycat="http://io.mycat/">

<schema name="gpmall" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>

<dataNode name="dn1" dataHost="localhost1" database="gpmall" />  

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" dbType="mysql" dbDriver="native" writeType="0" switchType="1"  slaveThreshold="100">  

    <heartbeat>select user()</heartbeat>

    <writeHost host="hostM1" url="172.16.51.22:3306" user="root" password="123456">

        <readHost host="hostS1" url="172.16.51.26:3306" user="root" password="123456" />

    </writeHost>

</dataHost>

</mycat:schema>

登录Mycat节点,修改server.xml配置文件,文件位置在/usr/local/mycat/conf目录下。在server.xml文件的最后部分,将<property name="schemas">USERDB</property>改成<property name="schemas">gpmall</property>,具体配置文件如下:

<user name="root">

<property name="password">123456</property>

<property name="schemas">gpmall</property>



<!-- 表级 DML 权限设置 -->

<!--

<privileges check="false">

<schema name="TESTDB" dml="0110" >

<table name="tb01" dml="0000"></table>

<table name="tb02" dml="1111"></table>

</schema>

</privileges>

 -->

</user>

(3)重启Mycat服务

登录Mycat节点,进入/usr/local/mycat/bin目录下,重启Mycat服务,命令如下:

 [root@mycat bin]# ./mycat restart

Stopping Mycat-server...

Mycat-server was not running.

Starting Mycat-server...

查看Mycat服务是否启动,命令如下,如果能看到8066端口,则说明Mycat服务启动成功。

[root@mycat conf]# netstat -ntpl

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      945/sshd            

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      862/master          

tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      15039/java          

tcp6       0      0 :::8066                 :::*                    LISTEN      15039/java          

tcp6       0      0 :::47746                :::*                    LISTEN      15039/java          

tcp6       0      0 :::56870                :::*                    LISTEN      15039/java          

tcp6       0      0 :::9066                 :::*                    LISTEN      15039/java          

tcp6       0      0 :::22                   :::*                    LISTEN      945/sshd            

tcp6       0      0 ::1:25                  :::*                    LISTEN      862/master          

tcp6       0      0 :::1984                 :::*                    LISTEN      15039/java          

2. 安装Redis服务

(1)修改主机名

登录Redis节点,修改主机名为redis,命令如下:

# hostnamectl set-hostname redis

(2)修改Yum源

将提供的gpmall-repo文件夹上传至Redis节点的/opt目录下,然后修改Yum源文件。

首先将/etc/yum.repo.d/目录下的所有文件移动到/media目录下,命令如下:

[root@redis ~]# mv /etc/yum.repos.d/* /media/

然后在/etc/yum.repo.d目录下创建local.repo文件,内容如下:

[root@redis ~]# cat /etc/yum.repos.d/local.repo

[gpmall]

name=gpmall

baseurl=file:///opt/gpmall-repo

gpgcheck=0

enabled=1

(3)安装Redis服务

使用Yum命令安装Redis服务,命令如下:

[root@redis ~]# yum install redis -y

(4)启动Redis服务

修改Redis配置文件,编辑/etc/redis.conf文件。

将bind 127.0.0.1这一行注释掉,将protected-mode yes改为protected-mode no。

启动Redis服务命令如下:

[root@mall ~]# systemctl start redis

[root@mall ~]# systemctl enable redis

Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.

检查Redis服务启动,命令如下,如果检查到6379端口,即证明Redis服务运行成功。

[root@redis ~]# netstat -ntpl
Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    

tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      1065/redis-server *

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      942/sshd            

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      860/master          

tcp6       0      0 :::6379                 :::*                    LISTEN      1065/redis-server *

tcp6       0      0 :::22                   :::*                    LISTEN      942/sshd            

tcp6       0      0 ::1:25                  :::*                    LISTEN      860/master        

至此,应用商城集群部署需要的环境Mycat、Redis、Zookeeper、Kafka服务均已部署完毕。Zookeeper和Kafka集群服务直接使用实战案例4.2和4.3构建完成的,不需要做修改。

1. 规划节点

使用Mycat读写分离数据库作为应用系统的数据库后端,使用ZooKeeper集群,Kafka集群提供应用系统调度服务,使用Reids提供应用系统消息队列服务,节点规划见表4-11-1。

表4-11-1 节点规划

IP

主机名

节点

172.16.51.6

mycat

Mycat中间件服务节点

172.16.51.18

db1

MariaDB数据库集群主节点

172.16.51.30

db2

MariaDB数据库集群从节点

172.16.51.23

zookeeper1

集群节点

172.16.51.32

zookeeper2

集群节点

172.16.51.41

zookeeper3

集群节点

172.16.51.40

redis

消息队列服务节点

172.16.51.11

jar1

Tomcat1节点

172.16.51.56

jar2

Tomcat2节点

172.16.51.45

nginx

Nginx服务器

2. 基础准备

使用CentOS 7.2系统,flavor使用2vCPU/4G内存/50G硬盘,创建3台虚拟机分别为jar1节点、jar2节点和Nginx节点。使用提供gpmall-shopping-0.0.1-SNAPSHOT.jar、gpmall-user-0.0.1-SNAPSHOT.jar、shopping-provider-0.0.1-SNAPSHOT.jar、user-provider-0.0.1-SNAPSHOT.jar 、dist这5个包部署应用系统,其中4个JAR包为后端服务包,在jar1节点和jar2节点上均运行,dist为前端包,在Nginx节点上部署。

4.11.3 案例实施

1. 基础环境配置

(1)修改主机名

登录172.16.51.11、172.16.51.56、172.16.51.45这3台虚拟机,使用hostnamectl命令修改3台主机的主机名。

172.16.51.11节点修改主机名命令:

[root@localhost ~]# hostnamectl set-hostname jar1

172.16.51.56节点修改主机名命令:

[root@localhost ~]# hostnamectl set-hostname jar2

172.16.51.45节点修改主机名命令:

[root@localhost ~]# hostnamectl set-hostname nginx

(2)配置Yum源

将提供的gpmall-repo文件夹上传至jar1、jar2、nginx这3个节点的/opt目录下,然后修改Yum源文件。

首先将3个节点/etc/yum.repo.d/目录下的所有文件移动到/media目录下,命令如下:

# mv /etc/yum.repos.d/* /media/

然后在/etc/yum.repo.d目录下创建local.repo文件,内容如下:

# cat /etc/yum.repos.d/local.repo

[gpmall]

name=gpmall

baseurl=file:///opt/gpmall-repo

gpgcheck=0

enabled=1

(3)安装Java环境

因为需要在jar1、jar2节点上运行提供的4个JAR包,所以需要在jar1和jar2节点上配置Java环境。安装java环境命令如下:

jar1节点:

[root@jar1 ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

[root@jar1 ~]# java -version

openjdk version "1.8.0_222"

OpenJDK Runtime Environment (build 1.8.0_222-b10)

OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)

jar2节点:

[root@jar2 ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

[root@jar2 ~]# java -version

openjdk version "1.8.0_222"

OpenJDK Runtime Environment (build 1.8.0_222-b10)

OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)

2. 后端配置

(1)配置hosts文件

在jar1和jar2节点,编辑/etc/hosts配置文件,文件内容如下:

jar1节点:

[root@jar1 ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.51.40  redis.mall

172.16.51.6  mysql.mall

172.16.51.23  kafka1.mall

172.16.51.32  kafka1.mall

172.16.51.41  kafka1.mall

172.16.51.23  zk1.mall

172.16.51.32  zk1.mall

172.16.51.41  zk1.mall

jar2节点:

[root@jar2 ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.51.40  redis.mall

172.16.51.6  mysql.mall

172.16.51.23  kafka1.mall

172.16.51.32  kafka1.mall

172.16.51.41  kafka1.mall

172.16.51.23  zk1.mall

172.16.51.32  zk1.mall

172.16.51.41  zk1.mall

(2)运行jar包

将提供的4个jar包,上传至jar1、jar2节点的/root目录下,然后运行这4个jar包,命令如下:

[root@jar1 ~]# nohup java -jar user-provider-0.0.1-SNAPSHOT.jar &
[1] 11025
[root@jar1 ~]# nohup: ignoring input and appending output to ‘nohup.out’

[root@jar1 ~]# nohup java -jar shopping-provider-0.0.1-SNAPSHOT.jar &
[2] 11039
[root@jar1 ~]# nohup: ignoring input and appending output to ‘nohup.out’

[root@jar1 ~]# nohup java -jar gpmall-shopping-0.0.1-SNAPSHOT.jar &
[3] 11085
[root@jar1 ~]# nohup: ignoring input and appending output to ‘nohup.out’

[root@jar1 ~]# nohup java -jar gpmall-user-0.0.1-SNAPSHOT.jar &
[4] 11105
[root@jar1 ~]# nohup: ignoring input and appending output to ‘nohup.out’

检查jar包是否运行,命令如下:

[root@jar1 ~]# ps -aux |grep java

root     11025 21.9 12.1 3605624 492588 pts/0  Sl   11:49   0:11 java -jar user-provider-0.0.1-SNAPSHOT.jar

root     11039 21.3  9.9 3596260 400936 pts/0  Sl   11:49   0:10 java -jar shopping-provider-0.0.1-SNAPSHOT.jar

root     11105 28.5  9.4 3590068 384476 pts/0  Sl   11:50   0:09 java -jar gpmall-user-0.0.1-SNAPSHOT.jar

root     11193  161 12.7 3596228 514868 pts/0  Sl   11:50   0:14 java -jar gpmall-shopping-0.0.1-SNAPSHOT.jar

root     11272  0.0  0.0 112640   960 pts/0    S+   11:50   0:00 grep --color=auto java

jar2节点:

[root@jar2 ~]# nohup java -jar user-provider-0.0.1-SNAPSHOT.jar &

[1] 10915

[root@jar2 ~]# nohup: ignoring input and appending output to ‘nohup.out’



[root@jar2 ~]# nohup java -jar shopping-provider-0.0.1-SNAPSHOT.jar &

[2] 10929

[root@jar2 ~]# nohup: ignoring input and appending output to ‘nohup.out’



[root@jar2 ~]# nohup java -jar gpmall-shopping-0.0.1-SNAPSHOT.jar &

[3] 11004

[root@jar2 ~]# nohup: ignoring input and appending output to ‘nohup.out’



[root@jar2 ~]# nohup java -jar gpmall-user-0.0.1-SNAPSHOT.jar &

[4] 11024

[root@jar2 ~]# nohup: ignoring input and appending output to ‘nohup.out’

检查jar包是否运行,命令如下:

[root@jar2 ~]# ps -ef |grep java

root     10915  9970 27 11:50 pts/0    00:00:11 java -jar user-provider-0.0.1-SNAPSHOT.jar

root     10929  9970 28 11:50 pts/0    00:00:10 java -jar shopping-provider-0.0.1-SNAPSHOT.jar

root     11004  9970 49 11:51 pts/0    00:00:13 java -jar gpmall-shopping-0.0.1-SNAPSHOT.jar

root     11024  9970 41 11:51 pts/0    00:00:09 java -jar gpmall-user-0.0.1-SNAPSHOT.jar

root     11113  9970  0 11:51 pts/0    00:00:00 grep --color=auto java

至此,应用系统部署完毕。

3. 前端配置

(1)安装Nginx服务

登录Nginx节点,安装Nginx服务,命令如下:

[root@nginx ~]# yum install nginx -y

(2)上传前端代码

将提供的dist文件夹上传至Nginx节点的/root目录下,然后将dist中的内容复制到nginx的项目目录,命令如下:

首先将Nginx默认项目目录的文件删除:

[root@nginx ~]# rm -rf /usr/share/nginx/html/*

然后将dist中的文件复制至/usr/share/nginx/html目录下:

[root@nginx ~]# cp -rvf dist/* /usr/share/nginx/html/

(3)修改Nginx配置文件

修改Nginx配置文件/etc/nginx/conf.d/default.conf如下,添加红框中的部分,IP地址为运行JAR包的2个服务器的IP。

upstream myuser {

    server 172.16.51.11:8082;

            server 172.16.51.56:8082;

    ip_hash;

}



        upstream myshopping {

            server 172.16.51.11:8081;

            server 172.16.51.56:8081;

            ip_hash;

        }

        upstream mycashier {

            server 172.16.51.11:8083;

            server 172.16.51.56:8083;

            ip_hash;

        }

server {

    listen       80;

    server_name  localhost;



    #charset koi8-r;

    #access_log  /var/log/nginx/host.access.log  main;



    location / {

        root   /usr/share/nginx/html;

        index  index.html index.htm;

    }

    location /user {

    proxy_pass http://myuser;

        }



    location /shopping {

    proxy_pass http://myshopping;

        }



    location /cashier {

    proxy_pass http://mycashier;

        }



    #error_page  404              /404.html;



    # redirect server error pages to the static page /50x.html

    #

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {

        root   /usr/share/nginx/html;

    }



    # proxy the PHP scripts to Apache listening on 127.0.0.1:80

    #

    #location ~ \.php$ {

    #    proxy_pass   http://127.0.0.1;

    #}



    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

    #

    #location ~ \.php$ {

    #    root           html;

    #    fastcgi_pass   127.0.0.1:9000;

    #    fastcgi_index  index.php;

    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

    #    include        fastcgi_params;

    #}



    # deny access to .htaccess files, if Apache's document root

    # concurs with nginx's one

    #

    #location ~ /\.ht {

    #    deny  all;

    #}

}

(4)启动Nginx服务

在nginx节点,启动Nginx服务,命令如下:

[root@nginx ~]# systemctl start nginx

查看Nginx是否启动,命令如下(查看80端口是否启动):

[root@nginx ~]# netstat -ntpl

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      10287/nginx: master

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      946/sshd            

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      864/master          

tcp6       0      0 :::22                   :::*                    LISTEN      946/sshd            

tcp6       0      0 ::1:25                  :::*                    LISTEN      864/master        

4. 网站访问

打开浏览器,在地址栏中输入http://172.16.51.45,访问界面,如图4-11-1所示。

图4-11-1 商城首页

单击右上角“头像”,进行登录操作,使用用户名/密码为test/test进行登录。

 类似资料: