商城网站——集群服务搭建
一:基础环境配置(镜像用的是CentOS-7-x86_64-DVD-1511.iso)
1】配置网卡和主机名(虚拟机安装的时候使用的是:basic network services)
[root@mall ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777728
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777728
UUID=c0f1a360-5aa7-48d8-8940-c5da25bec069
DEVICE=eno16777728
ONBOOT=yes
IPADDR=192.168.33.106
NETMASK=255.255.255.0
GATEWAY=192.168.33.2
DNS1=8.8.8.8
[root@mall ~]# hostname mall
[root@mall ~]# bash
[root@mall ~]# vim /etc/hostname 进入配置文件,修改原来的主机名,保存退出,重启即可生效。
2】永久关闭防火墙和selinux
[root@mall ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@mall ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@mall ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2023-01-15 20:19:01 CST; 14min ago
Main PID: 920 (firewalld)
CGroup: /system.slice/firewalld.service
└─920 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Jan 15 20:19:00 mall systemd[1]: Starting firewalld - dynamic firewall daemon...
Jan 15 20:19:01 mall systemd[1]: Started firewalld - dynamic firewall daemon.
3】本地yum源配置和gpmall-repo挂载:
(1)上传gpmall-repo的服务软件包,我这里用的是windTerm连接的虚拟机。
(可能是由于centos7的虚拟机在安装时设置了基础服务配置,导致了安装java服务出现了冲突问题)
所以我们配置完镜像挂载后,先安装完Java的服务后再配置gpmall-repo的挂载。
进行yum源配置:
[root@mall ~]# cd /opt/
[root@mall opt]# mkdir centos
[root@mall opt]# cd /etc/yum.repos.d/
[root@mall yum.repos.d]# mkdir bak
[root@mall yum.repos.d]# mv CentOS-* bak/
[root@mall yum.repos.d]# vim local.repo
[root@mall yum.repos.d]# cat local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[root@mall yum.repos.d]# yum clean all
[root@mall yum.repos.d]# mount /dev/cdrom /opt/centos/
mount: /dev/sr0 is write-protected, mounting read-only
[root@mall yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, langpacks
centos | 3.6 kB 00:00:00
(1/2): centos/group_gz | 155 kB 00:00:00
(2/2): centos/primary_db | 2.8 MB 00:00:00
Determining fastest mirrors
repo id repo name status
centos centos 3,723
repolist: 3,723
二:安装服务
1】安装java-1.8.0-openjdk和java-1.8.0-openjdk-devel服务
[root@mall ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.65-3.b17.el7 will be installed
...... (这里省略了安装过程,直接看结果吧)
Installed:
java-1.8.0-openjdk.x86_64 1:1.8.0.65-3.b17.el7 java-1.8.0-openjdk-devel.x86_64 1:1.8.0.65-3.b17.el7
Dependency Installed:
fontconfig.x86_64 0:2.10.95-7.el7 fontpackages-filesystem.noarch 0:1.44-8.el7
giflib.x86_64 0:4.1.6-9.el7 java-1.8.0-openjdk-headless.x86_64 1:1.8.0.65-3.b17.el7
javapackages-tools.noarch 0:3.4.1-11.el7 libICE.x86_64 0:1.0.9-2.el7
libSM.x86_64 0:1.2.2-2.el7 libXext.x86_64 0:1.3.3-3.el7
libXfont.x86_64 0:1.5.1-2.el7 libXi.x86_64 0:1.7.4-2.el7
libXrender.x86_64 0:0.9.8-2.1.el7 libXtst.x86_64 0:1.2.2-2.1.el7
libfontenc.x86_64 0:1.1.2-3.el7 libxslt.x86_64 0:1.1.28-5.el7
lksctp-tools.x86_64 0:1.0.13-3.el7 python-javapackages.noarch 0:3.4.1-11.el7
python-lxml.x86_64 0:3.2.1-4.el7 ttmkfdir.x86_64 0:3.0.9-42.el7
tzdata-java.noarch 0:2015g-1.el7 xorg-x11-font-utils.x86_64 1:7.5-20.el7
xorg-x11-fonts-Type1.noarch 0:7.5-9.el7
Complete!
[root@mall ~]# java -version --查看是否安装成功,显示如下表示安装成功
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)
2】将上传的gpmall-repo挂载,再进行安装redis,nginx,mariadb,Elasticsearch服务。
[root@mall ~]# ll
total 4
-rw-------. 1 root root 1004 Jan 15 20:06 anaconda-ks.cfg
drwxr-xr-x. 5 root root 50 Jan 15 20:36 gpmall-repo
[root@mall ~]# vim /etc/yum.repos.d/local.repo
[root@mall ~]# cat /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[mall]
name=mall
baseurl=file:///root/gpmall-repo
gpgcheck=0
enabled=1
[root@mall ~]# yum repolist
Loaded plugins: fastestmirror, langpacks
centos | 3.6 kB 00:00:00
mall | 2.9 kB 00:00:00
mall/primary_db | 144 kB 00:00:00
Loading mirror speeds from cached hostfile
repo id repo name status
centos centos 3,723
mall mall 165
repolist: 3,888
[root@mall ~]# yum -y install redis
[root@mall ~]# yum -y install nginx
[root@mall ~]# yum install mariadb mariadb-server -y
[root@mall ~]# yum -y install elasticsearch
3】安装zookeeper和kafka服务,并启动配置
将提供的 zookeeper-3.4.14.tar.gz 和kafka_2.11-1.1.1.tgz上传至云主机的/opt 内,解压:
[root@mall opt]# tar -zxvf zookeeper-3.4.14.tar.gz
[root@mall opt]# tar -zxvf kafka_2.11-1.1.1.tgz
(1)进入到 zookeeper-3.4.14/conf 目录下,将 zoo_sample.cfg 文件重命名为 zoo.cfg
[root@mall conf]# mv zoo_sample.cfg zoo.cfg
进入到 zookeeper-3.4.14/bin 目录下,启动 ZooKeeper 服务
#(/opt/zookeeper-3.4.14/bin/zkServer.sh start) --整个也可以直接启动
[root@mall bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@mall bin]# ./zkServer.sh status --查看状态
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: standalone
(2)进入到 kafka_2.11-1.1.1/bin 目录下,启动 Kafka 服务
[root@mall bin]# /opt/kafka_2.11-1.1.1/bin/kafka-server-start.sh -daemon /opt/kafka_2.11-1.1.1/config/server.properties
(如果第一个没有启动成功,也可以试下第二个)
[root@mall bin]# ./kafka-server-start.sh -daemon ../config/server.properties
使用 jps 或者 netstat –ntpl 命令查看 Kafka 是否成功启动
[root@mall bin]# jps
29424 Kafka
29472 Jps
28792 QuorumPeerMain
[root@mall bin]# 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 1530/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1628/master
tcp6 0 0 :::22 :::* LISTEN 1530/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1628/master
tcp6 0 0 :::47332 :::* LISTEN 28792/java
tcp6 0 0 :::2181 :::* LISTEN 28792/java
三:启动并配置各项服务服务
1】启动并配置mariadb数据库服务:
(1)修改数据库配置文件,并启动 MariaDB 数据库,设置 root 用户密码为 123456,并创建 gpmall数据库,将提供的 gpmall.sql 导入
[root@mall ~]# vim /etc/my.cnf
[root@mall ~]# cat /etc/my.cnf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d
[mysqld]
port=8066
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
[root@mall ~]# cat /etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf
# converted using /usr/bin/mariadb-service-convert
#
[Service]
(以上是查看的内容)
[root@mall ~]# rm -f /etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf
[root@mall ~]# ln -s /etc/my.cnf /etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf
[root@mall ~]# cat /etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d
[mysqld]
port=8066
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
# 如果启动出错,则查看是否在使用错误配置文件
cat /etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf
# 如果文件存在就删除
rm -f /etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf
# 创建 my.cnf 的软连接至此处
ln -s /etc/my.cnf /etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf
# 再次查看
cat /etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf
# 重启虚拟机,再查看状态
##配置数据库:
mysql_secure_installation
按 enter 继续
按 y 继续
输入密码 123456 继续
输入密码 123456 继续
...
按 y 继续
按 n 继续
按 y 继续
按 y 继续
# 将gpmall-mall.sql的文件上传到/root目录下
# 进入数据库
mysql -u root -p 123456
grant all privileges on *.* to root@localhost identified by '123456' with grant option;
grant all privileges on *.* to root@"%" identified by '123456' with grant option;
create database gpmall;
use gpmall;
source /root/gpmall.sql;
exit;
2】启动并配置redis服务:
编辑配置
vim /etc/redis.conf
将bind=127.0.0.1这一行注释掉
protected-mode yes =改为=> protected-mode no
启动
systemctl start redis
systemctl enable redis
3】启动并配置Elasticsearch服务:
vim /etc/elasticsearch/elasticsearch.yml
# 在头部添加:
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-credentials: true
# 将如下4条语句前的注释符去掉,并修改network.host的IP为本机 IP
cluster.name: my-application
node.name: node-1
network.host: 127.0.0.1(本机IP)
http.port: 9200
启动
systemctl start elasticsearch
systemctl enable elasticsearch
4】启动并配置nginx服务:
systemctl start nginx
systemctl enable nginx
四:全局变量配置,部署前后端
1】修改配置文件:
[root@mall ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1(本机IP地址) mall
127.0.0.1 kafka.mall
127.0.0.1 mysql.mall
127.0.0.1 redis.mall
127.0.0.1 zookeeper zookeeper.mall zk1.mall zk2.mall zk3.mall
127.0.0.1 kafka1.mall kafka2.mall kafka3.mall
2】部署前端:
将 dist 目录上传至服务器的/usr/share/nginx/html目录下
也可以先复制到/root目录下再复制过去
# 删除默认的
[root@mall ~]# rm -rf /usr/share/nginx/html/*
# 复制过去
[root@mall ~]# cp -rvf dist/* /usr/share/nginx/html/
修改 Nginx 配置文件/etc/nginx/conf.d/default.conf
[root@mall ~]# vim /etc/nginx/conf.d/default.conf
# 在文档的第12行插入如下类容,对齐格式
location /user {
proxy_pass http://192.168.33.106:8082;
}
location /shopping {
proxy_pass http://192.168.33.106:8081;
}
location /cashier {
proxy_pass http://192.168.33.106:8083;
}
重启服务:
systemctl restart nginx
3】部署后端:
将提供的 4 个 jar 包上传到服务器的/root 目录下:
重新启动之前停止的服务,如果启动了就不需要再启动了,以免出现无法开启的情况,并查看状态:
systemctl restart redis
systemctl restart elasticsearch
systemctl restart nginx
systemctl restart mariadb
# 最重要的是以下zookeeper和Kafka服务的状态:
## 启动Kafka服务
/opt/kafka_2.11-1.1.1/bin/kafka-server-start.sh -daemon /opt/kafka_2.11-1.1.1/config/server.properties
## 启动zookeeper服务
/opt/zookeeper-3.4.14/bin/zkServer.sh start
当所有服务启动完成后,查看接口状态没有问题后,再进行服务安装:
# nohup(非挂起运行) 加上这个命令,将以下服务在后台运行
# nohup java -jar shopping-provider-0.0.1-SNAPSHOT.jar & (后台运行)
java -jar shopping-provider-0.0.1-SNAPSHOT.jar
java -jar user-provider-0.0.1-SNAPSHOT.jar
(以下俩个服务:需要等前俩个运行后在进行运行,否则会有出现需要第二次运行的情况)
java -jar gpmall-shopping-0.0.1-SNAPSHOT.jar
java -jar gpmall-user-0.0.1-SNAPSHOT.jar
## 使用以上命令进行服务开启,最好是一个一个进行;
## 当服务运行一段时间后,出现卡停的情况实,是正常现象;
## 然后去浏览器访问查看是否显示页面。
五:浏览器访问主机IP地址
项目4-软件包
https://www.aliyundrive.com/s/CdKwtyi4Q9U
提取码: pk28
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
Open JDK安装:
官网下载:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
安装参考:http://openjdk.java.net/install/
Centos镜像下载:https://www.centos.org/download/