机器配置
主机名
IP地址
系统配置
指令
nginx
192.168.8.10
1核CPU,1G内存
sethost 10 nginx
mycat
192.168.8.11
1核CPU,2G内存
sethost 11 mycat
dns
192.168.8.12
1核CPU,1G内存
sethost 12 dns
server1
192.168.8.20
1核CPU,1G内存
sethost 20 server1
server2
192.168.8.21
1核CPU,1G内存
sethost 21 server2
database1
192.168.8.30
1核CPU,2G内存
sethost 30 database1
database2
192.168.8.31
1核CPU,2G内存
sethost 31 database2
报错处理方法
1 2 3 4 5 6 7 8 9 sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0 sudo vim /etc/sysconfig/network-scripts/ifcfg-eth1 //根据提示关闭指定ipv6 IPV6INIT=no IPV6_AUTOCONF=no nmcli con down eth0 && nmcli con up eth0 nmcli con down eth0 && nmcli con up eth1or reboot
server1 把资料中的apache-maven-3.6.3-bin.tar.gz、springboot-plus-master.tar.gz上传到server1机器上 解压apache-maven-3.6.3-bin.tar.gz
1 2 ~]# tar -xf apache-maven-3.6.3-bin.tar.gz ~]# mv apache-maven-3.6.3 /usr/local/maven
安装jdk和驱动
配置maven的环境变量
1 2 3 4 5 ~]# vim /etc/bashrc #在最后面配置如下内容export MAVEN_HOME ="/usr/local/maven" export PATH =$MAVEN_HOME /bin:$PATH
刷新配置和验证maven是否安装成功
1 2 3 ~]# source /etc/bashrc~]# mvn -v Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
解压springboot-plus-master.tar.gz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ~] ~] ] 总用量 60 drwxr-xr-x. 3 root root 67 2月 26 21:20 admin-console drwxr-xr-x. 3 root root 50 2月 23 21:37 admin-core -rw-r--r--. 1 root root 42 11月 22 2021 changelog.txt -rw-r--r--. 1 root root 28125 11月 22 2021 dept.txt drwxr-xr-x. 3 root root 130 11月 22 2021 doc drwxr-xr-x. 2 root root 90 11月 22 2021 lib -rw-r--r--. 1 root root 1485 11月 22 2021 LICENSE -rw-r--r--. 1 root root 2168 11月 22 2021 pom.xml -rw-r--r--. 1 root root 14511 11月 22 2021 README.md -rw-r--r--. 1 root root 642 11月 22 2021 sonar-project.properties
修改admin-console主应用程序的配置
1 2 3 4 5 6 7 8 vim admin-console/src/main/resources/application.properties #1 .修改点把127.0 .0 .1 改成192.168 .8 .30 spring.datasource.baseDataSource.url=jdbc:mysql://192.168 .8 .30 :3306 /starter? useUnicode=true &characterEncoding=UTF-8 &serverTimezone=GMT%2B8 &allowPublicKeyRetrieval=true &useSSL=false &useInformationSchema=true spring.datasource.baseDataSource.username=admin #修改为:admin spring.datasource.baseDataSource.password=123456 #修改为:OA办公系统 app.name=OA办公系统
主机重启后需要执行命令才能正常访问java -jar /root/springboot-plus-master/admin-console/target/admin-console-2.0.0.jar
部署database1 安装mysql数据库
server1执行命令 把server1中的sql数据传入到database1机器上 1 2 3 [root@server1 ~]# cd /root/springboot-plus-master/doc doc]# scp starter-mysql.sql root@192.168.8.30:
database1执行命令 登录到mysql中,创建数据库,创建用户,授权 1 2 3 4 ~]# mysql mysql> create database starter; mysql> create user admin @'%' identified by '123456' ; mysql> grant all on starter.* to admin @'%' ;
导入数据
测试admin用户能否登录到数据库,能否操作starter的表
1 2 3 4 5 ~]# mysql -u admin -p123456 mysql> use starter; mysql> show tables ; mysql> select * from core_user;
编译打包项目和启动项目 回到server1机器上,修改maven加速镜像,在第158行下添加 1 2 3 4 5 6 7 8 ] //命令模式 :set number 显示行号<mirror> <id> nexus-aliyun</id> <mirrorOf> * </mirrorOf> <name> Nexus aliyun</name> <url> http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
进入 springboot-plus-master目录,使用maven 编译打包
1 2 3 4 5 6 7 8 9 10 springboot-plus-master]# mvn clean package.. . [INFO ] admin .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. SUCCESS [ 35.124 s] [INFO ] admin-core .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. . SUCCESS [02:46 min] [INFO ] admin-console .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. SUCCESS [ 34.355 s] [INFO ] ------------------------------------------------------------------------ [INFO ] BUILD SUCCESS [INFO ] ------------------------------------------------------------------------ [INFO ] Total time: 04:13 min [INFO ] Finished at: 2025-02-26T22:20:59-05:00
查看编译成功后的目录
1 2 3 4 5 6 springboot -plus-master]# ls admin-console/pom .xml README.md src targetspringboot -plus-master]# ls admin-console/target/admin -console-2 .0 .0 .jar admin-console-2 .0 .0 -sources.jar generated-sources maven-statusadmin -console-2 .0 .0 .jar.original classes maven-archiver
启动admin-console-2.0.0.jar
1 2 3 4 ]# java -jar admin-console/target/admin-console-2.0 .0 .jar ...22675 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer start 220 - Tomcat started on port (s): 8080 (http) with context path '' 22728 [main] INFO com.ibeetl.admin.CosonleApplication logStarted 61 - Started CosonleApplication in 21.913 seconds (JVM running for 23.721)
通过浏览器访问http://192.168.8.20:8080
部署nginx,反向代理访问 使用yum安装nginx~]# yum -y install nginx
修改配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ~] ~] upstream oa_server { server 192.168 .8.20 :8080 ; } server { listen 80 ; server_name localhost; location / { proxy_pass http:// oa_server; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; } } ~]
通过浏览器访问nginx的IP
部署DNS服务器 安装dns相关软件包[root@nds ~]# yum -y install bind bind-chroot
修改主配置文件
1 2 3 4 5 6 7 8 9 10 [root@nds ~]options { directory "/var/named" ; }; zone "oa.com" IN { type master; file "oa.com.zone" ; };
建立地址库文件
1 2 3 4 5 6 [root@nds ~]# cd /var/named/ [root@nds named]# cp -p named.localhost oa.com.zone [root@nds named]# vim oa.com.zone NS server server A 192.168 .8 .12 @ A 192.168 .8 .10
启动dns
1 2 systemctl start named systemctl enable named
nginx配置修改 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@nginx nginx] upstream oa_server { server 192.168 .8.20 :8080 ; } server { listen 80 ; server_name io.com; location / { proxy_pass http:// oa_server; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; } }
在windows中添加dns配置 通过域名访问http://oa.com/
部署database2 安装mysql数据库
把server1中的sql数据传入到database2机器上
1 doc]# scp starter-mysql.sql root@192.168.8.31:
登录到mysql中,创建数据库,创建用户,授权
1 2 3 4 ~]# mysql mysql> create database starter; mysql> create user admin @'%' identified by '123456' ; mysql> grant all on starter.* to admin @'%' ;
导入数据
测试admin用户能否登录到数据库,能否操作starter的表
1 2 3 4 ~]# mysql -u admin -p123456 mysql> use starter; mysql> show tables ; mysql> select * from core_user;
配置主从复制 database1作为主数据库,配置主数据库 1 2 3 4 5 6 7 8 9 10 11 12 13 [root@database1 ~]# vim /etc/my.cnf.d/mysql-server.cnf[mysqld] server-id=30 [root@database01 ~]# systemctl restart mysqld [root@database01 ~]# mysql mysql> create user repluser@"%" identified by "123456"; mysql> grant replication slave on *.* to repluser@"%" ;mysql> show master status; +---------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +---------------+----------+--------------+------------------+-------------------+ | binlog.000002 | 668 | | | | +---------------+----------+--------------+------------------+-------------------+
database02作为从数据库,配置从数据库服务器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [root@database2 ~]# vim /etc/my.cnf.d/mysql-server.cnf [mysqld]server-id = 31 [root@database1 ~]# systemctl restart mysqld [root@database1 ~]# mysql mysql> change master to master_host = "192.168.8.30" , master_user = "repluser" , master_password = "123456" , master_log_file = "binlog.000002" ,master_log_pos = 668 ; mysql> start slave ; mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Waiting for source to send event Master_Host: 192.168 .8 .30 Master_User: repluser Master_Port: 3306 Connect_Retry: 60 Master_Log_File: binlog.000002 Read_Master_Log_Pos: 668 Relay_Log_File: database02-relay-bin.000002 Relay_Log_Pos: 323 Relay_Master_Log_File: binlog.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes
部署mycat服务器 从资料中将mycat2-1.21-release-jar-with-dependencies.jar、mycat2-install-template-1.21.zip上传到mycat机器上 安装mycat软件
1 2 3 4 5 ]# yum -y install java-1.8.0-openjdk.x86_64 ]# unzip mycat2-install-template-1.21.zip ]# mv mycat /usr/local/]# mv mycat2-1.21-release-jar-with-dependencies.jar /usr/local/mycat/lib/]# chmod -R 777 /usr/local/mycat/
连接mycat服务使用用户及密码
1 2 3 4 5 6 7 8 [root@mycat ~]# cat /usr/ local/mycat/ conf/users/ root.user.json { "dialect" :"mysql" , "ip" :null , "password" :"123456" , "transactionType" :"proxy" , "username" :"mycat" }
定义连接的数据库服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@mycat ~ ]# vim /usr/ local/mycat/ conf/datasources/ prototypeDs.datasource.json { "dbType" :"mysql" , "idleTimeout" :60000 , "initSqls" :[], "initSqlsGetConnection" :true , "instanceType" :"READ_WRITE" , "maxCon" :1000 , "maxConnectTimeout" :3000 , "maxRetryCount" :5 , "minCon" :1 , "name" :"prototypeDs" , "password" :"123456" , "type" :"JDBC" , "url" :"jdbc:mysql://localhost:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8" , "user" :"plj" , "weight" :0 }
在mycat主机运行数据库服务
1 2 3 4 5 ~]# yum -y install mysql-server ~]# systemctl start mysqld ~]# mysql mysql> create user plj@"%" identified by "123456"; mysql> grant all on *.* to plj@"%" ;
启动mycat服务
1 2 3 4 5 6 7 ~]# /usr/local /mycat/bin/mycat start #半分钟左右 能看到端口 [root@mycat ~]# netstat -utnlp | grep 8066 tcp6 0 0 :::8066 :::* LISTEN 57015 /java #如果很长时间没有看到端口,可能是你机器配置比较低,那这时候可能是超时了,去修改一个配置文件 ~]# vim /usr/local /mycat/conf/wrapper .conf wrapper .startup.timeout=120 #增加这个配置
每次重启需要执行这个命令
1 /usr/ local/mycat/ bin/mycat start
连接mycat服务,配置读写分离
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ~] mysql> show databases; +--------------------+ | `Database` | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ MySQL> /* + mycat:createdatasource{"name" :"whost30" , "url" :"jdbc:mysql://192.168.8.30:3306" ,"user" :"admin" ,"password" :"123456" }* /; Mysql>/* + mycat:createdatasource{"name" :"rhost31" , "url" :"jdbc:mysql://192.168.8.31:3306" ,"user" :"admin" ,"password" :"123456" }* /; mysql> /* +mycat:showDataSources{}* / \G [root@mycat ~] prototypeDs.datasource.json rhost31.datasource.json whost30.datasource.json
创建集群,连接mycat服务后做如下配置
1 2 3 4 5 6 7 8 9 10 11 12 ~] mysql>/*!mycat:createcluster{"name" :"rwcluster" ,"masters" :["whost30" ],"replicas" :["rhost31" ] }*/ ; mysql> /*+ mycat:showClusters{}*/ \G [root@mycat ~] prototype.cluster.json rwcluster.cluster.json
修改master角色主机仅负责写访问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [root@mycat ~] { "dbType" :"mysql" , "idleTimeout" : 60000 , "initSqls" :[] , "initSqlsGetConnection" :true , "instanceType" :"WRITE" , "logAbandoned" :true , "maxCon" : 1000 , "maxConnectTimeout" : 30000 , "maxRetryCount" : 5 , "minCon" : 1 , "name" :"whost30" , "password" :"123456" , "queryTimeout" : 0 , "removeAbandoned" :false , "removeAbandonedTimeoutSecond" : 180 , "type" :"JDBC" , "url" :"jdbc:mysql://192.168.8.30:3306?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true" , "user" :"admin" , "weight" : 0 }
修改slave角色主机仅负责读访问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [root@mycat ~] { "dbType" :"mysql" , "idleTimeout" : 60000 , "initSqls" :[] , "initSqlsGetConnection" :true , "instanceType" :"READ" , "logAbandoned" :true , "maxCon" : 1000 , "maxConnectTimeout" : 30000 , "maxRetryCount" : 5 , "minCon" : 1 , "name" :"rhost31" , "password" :"123456" , "queryTimeout" : 0 , "removeAbandoned" :false , "removeAbandonedTimeoutSecond" : 180 , "type" :"JDBC" , "url" :"jdbc:mysql://192.168.8.31:3306?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true" , "user" :"admin" , "weight" : 0 }
集群配置修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [root@mycat ~ ]# vim /usr/ local/mycat/ conf/clusters/ rwcluster.cluster.json { "clusterType" :"MASTER_SLAVE" , "heartbeat" :{ "heartbeatTimeout" :1000 , "maxRetryCount" :3 , "minSwitchTimeInterval" :300 , "showLog" :false , "slaveThreshold" :0.0 }, "masters" :[ "whost30" ], "maxCon" :2000 , "name" :"rwcluster" , "readBalanceType" :"BALANCE_ALL_READ" , #修改点 "replicas" :[ "rhost31" ], "switchType" :"SWITCH" }~ ]# /usr/ local/mycat/ bin/ mycat restart
指定starter数据库使用集群
1 2 3 4 5 6 7 8 9 10 11 12 [root@mycat ~]# vim /usr/local /mycat/conf/schemas /starter.schema .json { "customTables":{}, "globalTables":{}, "normalProcedures":{}, "normalTables":{}, "schemaName":"starter", "targetName":"rwcluster", "shardingTables":{}, "views":{} }
重启mycat,并验证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@mycat ~]# /usr/local/mycat/bin/mycat restart [root@mycat ~]# ss -antlup | grep 8066 tcp LISTEN 0 2048 *:8066 *:* users:(("java",pid=27791,fd=73)) ~]# mysql -h127.0.0.1 -P8066 -umycat -p123456mysql> show databases; +--------------------+ | `Database` | +--------------------+ | information_schema | | mysql | | performance_ schema || starter | +--------------------+ 4 rows in set (0.09 sec)
server01使用mycat连接数据库 修改为mycat的IP和端口,以及用户名
1 2 3 4 [root@server01 springboot-plus-master] spring.datasource.baseDataSource.url =jdbc:mysql://192.168 .8.11 :8066 /starter?useUnicode=true &characterEncoding=UTF-8 &serverTimezone=GMT%2 B8&allowPublicKeyRetrieval=true &useSSL=false &useInformationSchema=true spring.datasource.baseDataSource.username =mycatspring.datasource.baseDataSource.password =123456
关闭jar进程,重新打包
1 2 3 [root@server1 ~]# jps [root@server1 ~]# kill -9 4567 [root@server1 springboot-plus-master]# mvn clean package
运行
1 java -jar /root/springboot-plus-master/admin-console/target/admin-console-2 .0 .0 .jar
浏览器访问
部署server2 从server1 上把admin-console-2.0.0.jar拷贝到server2
1 2 [root@server1 ~]# cd springboot-plus-master/admin-console/target / [root@server1 target ]# scp admin-console-2.0 .0 .jar root@192 .168.8 .21 :
server2安装jdk
运行admin-console-2.0.0.jar
1 [root@server2 ~]# java -jar admin-console-2.0.0.jar
浏览器访问
修改nginx配置,实现负载均衡 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ~] upstream oa_server { server 192.168 .8.20 :8080 ; server 192.168 .8.21 :8080 ; } server { listen 80 ; server_name localhost; location / { proxy_pass http:// oa_server; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; } } ~]
通过dns的域名访问