MySQL + Nginx + Nacos 搭建nacos集群环境
Posted No码农
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL + Nginx + Nacos 搭建nacos集群环境相关的知识,希望对你有一定的参考价值。
1、安装jdk
参考文章: Centos安装JDK1.8
2、安装mysql
参考文章: Centos安装MySQL
2.1、docker安装MySQL
- 下载镜像文件
docker pull mysql:5.7
- 创建实例并启动
参数说明docker run -p 3306:3306 --name mysql \\ -v /mydata/mysql/log:/var/log/mysql \\ -v /mydata/mysql/data:/var/lib/mysql \\ -v /mydata/mysql/conf:/etc/mysql \\ -e MYSQL_ROOT_PASSWORD=root \\ -d mysql:5.7
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码 - MySQL 配置
vi /mydata/mysql/conf/my.cnf
注意:解决 MySQL 连接慢的问题[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] 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 skip-name-resolve
在配置文件中加入如下,并重启 mysql
[mysqld]
skip-name-resolve
解释:
skip-name-resolve:跳过域名解析 - 通过容器的 mysql 命令行工具连接docker exec -it mysql mysql -uroot -proot
- 设置 root 远程访问
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option; flush privileges;
- 进入容器文件系统
docker exec -it mysql /bin/bash
3、安装nginx
参考文章: Centos安装Nginx
- 配置Nginx配置文件
- 启动Nginx
./nginx
- 具体含义可参考该文章: Nginx
4、安装Nacos
-
下载地址(我下的是2.0.3版本): Nacos版本下载地址
-
下载完成后,放到虚拟机的某个目录,进行解压 nacos-server-2.0.3.tar.gz
tar -zxvf nacos-server-2.0.3.tar.gz
-
nacos配置mysql数据库
- 我使用的是docker安装的MySQL数据库,需要进入容器后,查看容器ip,如果是Centos安装的MySQL,ip就是127.0.0.1.
- 进入nacos目录下的conf目录下
- 配置application.properties文件(最好备份一份 cp application.properties application.properties. init)
- 我使用的是docker安装的MySQL数据库,需要进入容器后,查看容器ip,如果是Centos安装的MySQL,ip就是127.0.0.1.
-
nacos的集群配置cluster.conf
- 配置cluster.conf(最好备份一份 cp cluster.conf cluster.conf.init),配置内容如下(配置的是本机真实ip,不能用localhost和127.0.0.1 ,暂时不清楚为什么是这样):
- 上述ip可以通过命令查看,地址如下(如果用第二192.168.56.10,会出现一些问题,集群部署后,会有ip为10.0.2.15:3333等多个nacos被启动,暂时不清楚这个原因):
- 配置cluster.conf(最好备份一份 cp cluster.conf cluster.conf.init),配置内容如下(配置的是本机真实ip,不能用localhost和127.0.0.1 ,暂时不清楚为什么是这样):
-
编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口
-
进入nacos安装目录下的bin目录下,编辑 startup.sh(建议这个启动文件快照或者cp startup.sh startup.sh.bk一份)
while getopts ":m:f:s:c:p:o:" opt do case $opt in m) MODE=$OPTARG;; f) FUNCTION_MODE=$OPTARG;; s) SERVER=$OPTARG;; c) MEMBER_LIST=$OPTARG;; p) EMBEDDED_STORAGE=$OPTARG;; o) PORT=$OPTARG;; ?) echo "Unknown parameter" exit 1;; esac done
# start echo "$JAVA $JAVA_OPT_EXT_FIX $JAVA_OPT" > $BASE_DIR/logs/start.out 2>&1 & nohup "$JAVA" -Dserver.port=$PORT "$JAVA_OPT_EXT_FIX" $JAVA_OPT nacos.nacos >> $BASE_DIR/logs/start.out 2>&1 & echo "nacos is starting,you can check the $BASE_DIR/logs/start.out"
-
-
复制当前Nacos文件夹复制两份(如果都在一个文件夹启动一个会报错)
-
启动第一个能成功,如果在当前文件夹下启动第二个,当启动报错信息如下(打印日志,可以进入nacos目录下的log文件夹下的naocs.log文件或者查看Nacos2.0.3的日志(如果没启动Nacos是不会有logs/start.out这个文件的)):
./startup.sh -o 3333
-
分别在不同的copy的nacos文件夹下的startup.sh启动,指定端口号 ./startup.sh -o 端口号。启动成功查看日志,都会出现下图。可以在访问:http://虚拟机ip:3333/nacos/#/login 、http://虚拟机ip:4444/nacos/#/login 、http://虚拟机ip:5555/nacos/#/login,如果都能访问成功,证明集群搭建成功。
#查看启动nacos实例 ps -ef|grep nacos|grep -v grep
-
-
使用Nginx访问,实现负载均衡效果。之后环境需要配置即可配置该地址即可,实现了nacos集群环境的搭建和使用。
Spring-Clould-Alibaba-nginx-nacos集群搭建
下载nacos源码
下载地址:https://github.com/alibaba/nacos/releases
下载后, 修改源码进行编译,把mysql数据库改为mysql8
1. 修改pom文件
修改mysql驱动 改为8.0以上的版本
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
2. 修改MysqlHealthCheckProcessor导入的包为mysql8的驱动包
位置:
nacos-1.1.4
amingsrcmainjavacomalibaba
acos
aminghealthcheck
import com.mysql.cj.jdbc.MysqlDataSource;
3. 修改数据库连接配置为mysql8的配置
db.url.0=jdbc:mysql://11.162.196.161:3306/diamond_devtest?serverTimezone=GMT%2B8&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.url.1=jdbc:mysql://11.163.152.91:3306/diamond_devtest?serverTimezone=GMT%2B8&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
4. 进入到源码根目录,使用mvn进行打包
命令:mvn -Prelease-nacos clean install -U -Dmaven.skip.test=true
5.创建数据库
数据库名称
创建数据库 执行sql文件nacos-mysql.sql
6. 打包后, 找到nacos-1.1.4distribution arget acos-server-1.1.4
路径不要有中文
7. 复制3份nacos工程,分别配置信息
1. 设置端口号
另外两个分别设置成8850,8851
2. 设置数据库连接信息 相同的位置 在application.properties下
# 指定数据源为
Mysqlspring.datasource.platform=mysql
# 数据库实例数量
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456
另外两个 8850,8851也一样配置数据库的连接信息
3. 集群信息
把cluster.conf.example文件改为cluster.conf配置以下信息
在cluster.config 配置如下信息 ip是你自己电脑的ip 端口号是nacos的端口
另外两个nacos也一样修改
4.分别进入到bin目录下,修改startup.cmd
set MODE="cluster"
另外两个也一样修改
5.在nginx当中配置反向代理
ngix下载地址:http://nginx.org/en/download.html
修改nginx.conf配置文件
注意位置要和图中保持一致 nginx路径不要有中文
upstream nacos {
server 192.168.2.101:8849;
server 192.168.2.101:8850;
server 192.168.2.101:8851;
}
location /nacos {
proxy_pass http://nacos/nacos;
}
启动nginx 浏览器输入localhost:80
启动成功
启动三个nacos
双击startup.cmd
启动完成不要关闭cmd窗口
浏览器访问:http://localhost/nacos/
用户名:nacos 密码 nacos
看集群信息,已经搭建集群完成
6.将服务注册到Nacos当中
把user和goods的nacos地址端口改成80
启动两个服务
服务已被nacos发现注册成功
以上是关于MySQL + Nginx + Nacos 搭建nacos集群环境的主要内容,如果未能解决你的问题,请参考以下文章