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

  1. 下载镜像文件
    docker pull mysql:5.7
    
  2. 创建实例并启动
    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 用户的密码
  3. MySQL 配置
    vi /mydata/mysql/conf/my.cnf
    
    [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 连接慢的问题
    在配置文件中加入如下,并重启 mysql
    [mysqld]
    skip-name-resolve
    解释:
    skip-name-resolve:跳过域名解析
  4. 通过容器的 mysql 命令行工具连接docker exec -it mysql mysql -uroot -proot
  5. 设置 root 远程访问
    grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
    flush privileges;
    
  6. 进入容器文件系统
    docker exec -it mysql /bin/bash
    

3、安装nginx

参考文章: Centos安装Nginx

  1. 配置Nginx配置文件
  2. 启动Nginx
    ./nginx
    
  3. 具体含义可参考该文章: Nginx

4、安装Nacos

  1. 下载地址(我下的是2.0.3版本): Nacos版本下载地址

  2. 下载完成后,放到虚拟机的某个目录,进行解压 nacos-server-2.0.3.tar.gz

    tar -zxvf nacos-server-2.0.3.tar.gz 
    
  3. nacos配置mysql数据库

    • 我使用的是docker安装的MySQL数据库,需要进入容器后,查看容器ip,如果是Centos安装的MySQL,ip就是127.0.0.1.
    • 进入nacos目录下的conf目录下
    • 配置application.properties文件(最好备份一份 cp application.properties application.properties. init)
  4. 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被启动,暂时不清楚这个原因):
  5. 编辑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"
      
  6. 复制当前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
      




  7. 使用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集群环境的主要内容,如果未能解决你的问题,请参考以下文章

搭建Nacos集群

Nacos集群搭建过程详解

docker部署nacos集群并配置mysql8

Nacos集群搭建

注册中心Ncaos--集群搭建及Nginx反向代理

05.Nacos集群搭建及高可用方案