0%

ubuntu 16.04及以上可用。

1. 准备4台linux服务器

  • 准备阿里云服务器4台,3台用做nacos集群,1台用做mysql数据库
  • 配置阿里云服务器网络安全组,打开入网端口(8848)

2. 安装mysql

(1)下载并安装MySQL官方的Yum Repository, Mysql版本 5.7.14

# wget -i -c https://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
# yum -y install mysql57-community-release-el7-10.noarch.rpm

(2)安装MySQL 服务器

# yum -y install mysql-community-server

(3)MySQL数据库设置

  • 首先启动MySQL

    # systemctl start mysqld.service

  • 查看MySQL运行状态

    # systemctl status mysqld.service

  • 找root用户密码

    # grep “password” /var/log/mysqld.log

  • 进入数据库

    # mysql -uroot -p

  • 修改数据库密码

    mysql> SET PASSWORD = PASSWORD(‘12345678’);
    mysql> ALTER USER ‘root’@’localhost’ PASSWORD EXPIRE NEVER;
    mysql> FLUSH PRIVILEGES;

  • 如果提示密码不符合策略,做如下操作再设置密码

    mysql> set global validate_password_policy=0;
    mysql> set global validate_password_length=1;

  • 重新登录数据库,设置远程连接

    mysql> use mysql;
    mysql> update user set host = ‘%’ where user = ‘root’;
    mysql> FLUSH PRIVILEGES;

  • 进行远程连接测试

    本地进行连接测试

  • 为firewalld添加开放端口

    添加mysql端口3306
    # systemctl start firewalld
    # firewall-cmd –zone=public –add-port=3306/tcp –permanent
    # firewall-cmd –reload

  • 更改mysql语言

    首先重新登录mysql,然后输入status,可以看到Server characterset: latinl,不是utf-8;
    出mysql, vi /etc/my.cnf新增下面代码
    character-set-server=utf8
    collation-server=utf8_general_ci
    保存成功后,重启mysql,然后输入status就会发现变化了

3. 安装Nacos

(1)准备3台服务器作nacos集群

配置hosts
# vi /etc/hosts
配置本机的hostname到ip地址的映射

(2)安装JDK

到ORACLE官网下载linux版本的jdk:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
上传jdk到三台服务器上,然后安装 # rpm -ivh jdk-8u131-linux-x64.rpm
配置jdk相关环境变量 # vi /etc/bashrc
export JAVA_HOME=/usr/java/jdk1.8.0_131
export PATH=$PATH:$JAVA_HOME/bin
source /etc/bashrc
测试jdc安装是否成功:java -version

(3)下载nacos-server-1.4版本的源码

# git clone https://github.com/alibaba/nacos.git
# cd nacos
# mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
# ls -al distribution/target/ 可以看到nacos-server-1.4.0-SNAPSHOT.tar.gz压缩包  

(4) nacos上传到服务器上

win命令可以用 scp nacos-server-1.4.0-SNAPSHOT.tar.gz root@192.168.xxx.xxx:/usr/local/xxx 上传到三台服务器上

(5)配置nacos

  • 解压nacos
    • 进入到nacos/conf目录下,重命名 cluster.conf.example, 去掉 example: mv cluster.conf.example cluster.conf, 然后编辑cluster.conf文件,配置三台机器的地址和端口号,默认端口号是8848
    • 配置数据库

      修改application.properties文件里面数据库配置
      spring.datasource.platform=mysql
      db.num=1
      db.url.0=xx, 替换成mysql数据库端口号及数据库
      db.user=xx
      db.password=xx

    • 打开8848端口

      开启防火墙 # systemctl start firewalld
      开放指定端口 # firewall-cmd –zone=public –add-port=8848/tcp –permanent
      重启防火墙 # firewall-cmd –reload

  • mysql导入nacos相关数据库表
    • 在下载的nacos源码里nacos\distribution\conf下有nacos-mysql.sql文件
  • 启动
    • 分别进行三台机器的bin目录下,执行startup.sh,检查logs目录下的start.out启动日志
    • 启动时如果startup.sh无法启动,可能是因为文件格式不对,需要修改文件格式

      # vi startup.sh
      :set fileformat=unix
      :wq

  • 访问nacos
    • 在浏览器地址栏输入nacos集群中的一个ip地址,192.168.xxx.xxx:8848/nacos/index.html即可跳转到nacos登录页面,默认用户名和密码都是nacos,登录成功后可看到nacos相关信息。

4. 问题

(1)nacos启动时nacos.log中报xxxIP未加入到集群list中的异常

  • 阿里云的实例有公有ip和私有ip,在nacos的cluster.conf配置文件中配置的是公有ip,但在启动时,nacos会将本机的私有ip自动加入到cluster.conf文件中,导致启动时报xxxIP未加入到集群list中的异常,虽然在页面上可以正常进入到nacos管理页面,但在做dubbo集成时,dubbo的服务调用方会注册不成功。
  • 目前的解决办法

    修改nacos的启动文件,添加本地ip地址配置
    # vi startup.sh
    找到 JVM Configuration 这部分, 在集群参数里增加 -Dnacos.server.ip=xx
    JAVA_OPT=”${JAVA_OPT} -Dnacos.server.ip=xx.xx.xx.xx”