当前位置: 首页 > news >正文

高并发购物商城系统搭建实战

实验需求

搭建一个gpmall应用商城系统,所使用的技术有:数据库主从+书写分离、zookeeper+Kafka、redis、
nginx部署负载均衡

主机IP****地址部署的服务
mycat192.168.100.10zookeeper、Kafka、部署mycat
db1192.168.100.20zookeeper、Kafka、数据库主库
db2192.168.100.30zookeeper、Kafka、数据库从库
node4192.168.100.40httpd

操作流程:

配置环境:

步骤一:配置node4主机的yum源

rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/server.repo
#在server.repo文件内添加以下内容
[aa]
name=aa1
baseurl=file:///mnt
enabled=1
gpgcheck=0
#挂载
mount /dev/cdrom /mnt

步骤二:在node4主机安装httpd服务

yum -y install httpd	 # 安装httpd服务

此时页面资源存放的路径为/var/www/html/目录下

步骤三:把项目资源下载到node4主机的/var/www/html/目录下

在这里插入图片描述

systemctl restart httpd 	# 启动httpd服务
systemctl enable httpd

步骤四:配置其他三台主机的yum源

因为项目里面有yum源,所以需要配置其他三台主机的yum源指向项目的yum地址

# yun地址为:
/var/www/html/project4/gpmall-repo# 配置其他三台主机的yum源
rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/server.repo
# 在server.repo文件内添加以下内容
[aa]
name=a1
baseurl=http://192.168.100.40/project4/gpmall-repo
enabled=1
gpgcheck=0mount /dev/cdrom /mnt

步骤五:在node1中配置hosts文件

vim /etc/hosts
# 在hosts文件内容添加以下内容
192.168.100.10 mycat
192.168.100.20 db1
192.168.100.30 db2
192.168.100.10 zookeeper1
192.168.100.20 zookeeper2
192.168.100.30 zookeeper3
192.168.100.10 redis
192.168.100.10 mysql.mall
192.168.100.10 zk1.mall
192.168.100.20 zk2.mall
192.168.100.30 zk3.mall
192.168.100.10 kafka1.mall
192.168.100.20 kafka2.mall
192.168.100.30 kafka3.mall
192.168.100.10 redis.mallscp /etc/hosts root@db2:/etc/hosts # 把文件传给db2
scp /etc/hosts root@db3:/etc/hosts # 把文件传给db2

部署数据库主从:

步骤一:在db2和db3中安装mariadb数据库

# 安装数据库
yum -y install mariadb mariadb-server
# 启动maridb服务,在启动完成后才会设置开机自启
systemctl restart mariadb;systemctl enable mariadb

步骤二:数据库初始化

mysql_secure_installation # 初始化指令
# 步骤:
回车
y
设置密码
确认密码
y
n
y
y

步骤三:登录数据库,测试是否初始化成功

mysql -uroot -p123456  # 123465为初始化过程中设置的密码

步骤四:修改数据库配置文件(配置主从数据库)

# 在db2主机中
vim /etc/my.cnf
# 在my.cnf文件中添加以下内容
[mysqld]
log_bin=mysql-bin
server_id=20
# 配置主从数据库中,主数据库的server_id值应该小于从数据库的server_id值# 在db3中
vim /etc/my.cnf
# 在my.cnf文件中添加以下内容
[mysqld]
log_bin=mysql-bin
server_id=30

在这里插入图片描述

步骤五:在db2和db3中重启mariadb服务(因为刚才修改my.cnf文件)

systemctl restart mariadb

步骤六:db2主机在数据库中配置主从

mysql -uroot -p123456 # 进入数据库# 授权(运训root用户操作数据库中所有表,并允许该用户从任意IP地址访问)
grant all privileges on *.* to root@'%' identified by '123456';
# 创建一个user用户,当指定ip地址的主机访问数据库时使用该用户。
grant replication slave on *.* to 'user'@'192.168.100.30' identified by '123456';
# 刷新
flush privileges;

步骤七:db3主机在数据库中配置主从

mysql -uroot -p123456  # 进入数据库
grant all privileges on *.* to root@'%' identified by '123456';
change master to master_host='192.168.100.20',master_user='user',master_password='123456';
start slave;  # 启动从库
show slave status \G;  # 查看从库状态

步骤八:测试

# 在node2的数据库中
create database test;  # 创建数据库
show databases;  # 查看数据库

在这里插入图片描述

# 在db3的数据库中
show databases;  # 查看是否存在test数据库

启动Kafka

步骤一:三台主机都启动zookeeper

zkServer.sh start  # 启动zookeeper
zkServer.sh status  # 可以查看三台主机分别为folloewe和leader

步骤二:三台主机启动Kafka

/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties

步骤三:使用jps查看Kafka服务是否开启

jps

在这里插入图片描述

应用集群

步骤一:把gpmall项目数据库导入db2主机中

在这里插入图片描述

步骤二:把gpmall.sql文件导入数据库中;

create database gpmall;
use gpmall;
source /root/gpmall.sql;
show tables;

在这里插入图片描述

部署读写分离:

步骤一:在mycat主机中下载mycat软件包

在这里插入图片描述

步骤二:解压mycat软件包

tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

步骤三:修改/etc/profile文件

vim /etc/profile
# 在profile文间中添加以下内容
export MYCAT_HOME=/usr/local/mycat
source /etc/profile

步骤四:编辑schema.xml文件(配置读写分离的数据库)

# 设置数据库写入节点为db1,读取节点db2
vim /usr/local/mycat/conf/schema.xml
# 把schema.xml文件中文件内容替换成以下
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><schema name="gpmall" checkSQLschema="true" 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="192.168.100.20:3306" user="root" password="123456"><readHost host="hostS1" url="192.168.100.30:3306" user="root" password="123456" /></writeHost></dataHost>
</mycat:schema>

步骤五:编辑server.xml文件

vim /usr/local/mycat/conf/server.xml
# 在server.xml文件中删除以下内容
<user name="root"><property name="password">user</property><property name="schemas">TESTDB</property><property name="readOnly">true</property>
</user>
# 并修改root用户的密码123456,访问mycat的逻辑库为USERDB,具体操作如下:<property name="password">123456</property><property name="schemas">gpmall</property>

步骤六:启动mygcat服务

/usr/local/mycat/bin/mycat start

步骤七:查看服务是否开启

ss -anlt # 查看8066和9066端口是否开启
# 8066为管理端口,9066为数据端口

在这里插入图片描述

步骤七:安装MariaDB

# 安装前提,配置好yum地址为node4主机的/Project4/gmall-repo目录
yum -y install MariaDB-clientmysql -uroot -p123456 -h127.0.0.1 -P8066 #进入数据库
show databases;
use USERDB;
show tables;
select * from company;
insert into company values(2,"basketball","usa");
select * from company;

步骤八:验证mycat服务对数据库读写操作分离

mysql -h127.0.0.1 -P9066 -uroot -p123456 -e 'show@@datasource;'

在这里插入图片描述

部署redis

步骤一:在mycat主机安装redis

yum -y install redis

步骤二:修改redis.conf配置文件

vim /etc/redis.conf
# 在redis.conf文件中修改以下内容
bind 127.0.0.1 	# 注释此行
protected-mode nosystemctl restart redis
systemctl enable redis

步骤三:查看redis服务是否开启

ss-anlt

在这里插入图片描述

部署nginx(实现负载均衡)

步骤一:下载jar包到db2和db3主机中

在这里插入图片描述

步骤二:在db2,db3主机中启动jar包

nohup java -jar user-provider-0.0.1-SNAPSHOT.jar &
nohup java -jar shopping-provider-0.0.1-SNAPSHOT.jar &
nohup java -jar gpmall-user-0.0.1-SNAPSHOT.jar &
nohup java -jar gpmall-shopping-0.0.1-SNAPSHOT.jar &

步骤三:查看jar包是否启动

在这里插入图片描述

步骤四:在mycat主机中安装nginx

yum -y install nginx

步骤五:删除nginx里面的页面

rm -rf /usr/share/nginx/html/

步骤六:把前端页面dist文件下载到mycat主机中

在这里插入图片描述

步骤七:把前端页面添加进入nginx

cp -rvf dist/* /usr/share/nginx/html/

步骤八:修改nginx配置文件实现负载均衡

vim /etc/nginx/conf.d/default.conf
# 在default.conf文件的首行添加以下内容
upstream myuser {server 192.168.100.20:8082;server 192.168.100.30:8082;ip_hash;}
upstream myshopping {server 192.168.100.20:8081;server 192.168.100.30:8081;ip_hash;
}
upstream mycashier {server 192.168.100.20:8083;server 192.168.100.30:8083;ip_hash;
}
#server {
#在server中添加以下内容location /user {proxy_pass http://myuser;}location /shopping {proxy_pass http://myshopping;}location /cashier {proxy_pass http://mycashier;}
#}systemctl restart nginx  # 启动nginx
systemctl enable nginx
ss -anlt  # 查看80端口是否启动

在这里插入图片描述

步骤九:访问页面192.168.100.10

在这里插入图片描述

http://www.dtcms.com/a/537579.html

相关文章:

  • [人工智能-大模型-95]:大模型应用层 - RAG, 大模型,应用之间的关系
  • CrossFormer 论文详解教程
  • 【Java】@Autowired警告问题,使用@RequiredArgsConstructor
  • 免费推广网站2023网页设计实训心得500字
  • wordpress快站怎么样哪一个做h5的网站好
  • 大模型入门学习路径(个人学习路径的分享)
  • 医药平台网站建设国外h5制作网站模板
  • wordpress博客收录查询西安网站优化公司
  • Docker基础教程 - 容器化部署入门指南
  • 谷歌网站开发用什么框架软件技术专升本需要考什么
  • 企业百度网站建设做模具行业的网站
  • 030-Spring AI Alibaba OpenAI Chat 功能完整案例
  • Java全栈学习笔记43
  • 现在网站做多宽的杭州网络推广运营公司
  • 电子商务网站技术广告公司业务员小刘与客户马经理
  • 绑定网站山西网架公司
  • 《蒙台梭利的早教全书》笔记(二)-“非干预教育法”
  • 网站制作方案介绍及要求aspaccess做网站
  • 怎么建立图片文件深圳网站优化咨询
  • 三合一网站方案昆明网站建设制作
  • 云南网站建百度搜索关键词热度
  • 【STM32项目开源】STM32单片机多功能饮水机系统
  • redis-哨兵模式配置整理
  • Cookie 快速导入浏览器
  • Day02 js的运算符及语句
  • 合肥关键词排名首页seo广告优化
  • Halcon学习--(6)Blob分析
  • 快速上手大模型:深度学习2(实践:深度学习基础、线性回归)
  • 网站建设多少钱十年乐云seowordpress倒入数据库
  • 如何搭建内网网站wordpress响应式主题下载