本地虚拟机搭建nacos集群

本地虚拟机搭建nacos集群

准备工作

准备好三台服务器:

192.168.91.129

192.168.91.130

192.168.91.131

nacos所需环境:

jdk1.8、mysql8.0

安装jdk1.8

三台机器安装jdk1.8

1、安装之前先卸载linux下自带的openjdk,可以用 java -version命令查看

`openj`dk version "1.8.0_262"`
      `OpenJDK Runtime Environment (build 1.8.0_262-b10)`
      OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)`

如果出现这些,就要删除openjdk了。

rpm -qa |grep jdk # 先查找openJdk的位置

copy-jdk-configs-3.3-10.el7_5.noarch
	 java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
	 java-1.8.0-openjdk-headless-1.8.0.262.b10-0.el7_8.x86_64

查找之后删除

     [root@m local]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
     [root@m local]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.262.b10-0.el7_8

2、下载linux环境下的oracle jdk1.8包,并解压

tar -zxvf jdk-8u171-linux-x64.tar.gz

3、配置环境变量

   [root@localhost local]# vim /etc/profile
	export JAVA_HOME=/usr/local/jdk1.8.0_181  #jdk安装目录
	export JRE_HOME=${JAVA_HOME}/jre
	export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
	export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
	export PATH=$PATH:${JAVA_PATH}

4、文件生效

	[root@localhost local]# source /etc/profile

5、查看是否安装成功

[root@m local]# java -version
	java version "1.8.0_171"
	Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
	Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

jdk1.8安装成功。

docker安装mysql8.0

参考: https://blog.csdn.net/u014576291/article/details/105890286

安装过程中使用到的docker命令:

         service docker start  启动docker 
          docker pull 拉取镜像
		  docker images 查看本机都pull下来哪些镜像
		  docker ps 查看容器的运行状态
		  docker stop  停止容器
		  docker rm 删除容器 如 docker rm mysql
		  docker run 启动容器

1、拉取mysql镜像

   docker pull mysql:8.0.20

2、启动mysql

docker run --name mysql -p 3306:3306 --privileged=true --restart unless-stopped -v /mysql/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root  -d mysql:8.0.20

参数解析:	
        --privileged=true  挂载文件权限设置
		--restart unless-stopped  设置 开机后自动重启容器
		-v /mnt/sda1/mysql8.0.20/mysql:/etc/mysql    挂载配置文件
		-v /mnt/sda1/mysql8.0.20/logs:/logs \      挂载日志
		-v /mnt/sda1/mysql8.0.20/data:/var/lib/mysql \  挂载数据文件 持久化到主机,
		-v /etc/localtime:/etc/localtime    容器时间与宿主机同步
		-e MYSQL_ROOT_PASSWORD=123456    设置密码
		-d  mysql:8.0.20   后台启动,安装的mysql相关版本

3、启动完成之后,本机navicat远程连接mysql时候报错:

参考:https://my.oschina.net/u/3295928/blog/1811804

Client does not support authentication protocol requested by server

原因:密码加密规则问题。

解决:修改 远程连接的root用户(root@)的插件为mysql_native_password;
更改加密插件规则:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxx'; 
FLUSH PRIVILEGES;

验证是否成功:

  select host,user,plugin from user where user='root';
		   查看是否更改成功。
		   mysql> select host,user,plugin from user where user='root';
					+-----------+------+-----------------------+
					| host      | user | plugin                |
					+-----------+------+-----------------------+
					| %         | root | mysql_native_password |
					| localhost | root | mysql_native_password |
					+-----------+------+-----------------------+

注意: mysql 中root用户中主机是%和localhost的区别

		 root'@'%:root远程连接mysql;root'@'localhost root本地连接mysql。

4、连接上mysql数据库后。

建立三个数据库,分别对应nacos的三个节点。

192.168.91.129 nacos01

192.168.91.130 nacos02

192.168.91.131 nacos03

5、创建nacos连接数据库的用户并赋权

  create user nacos identified by 'nacos';  # 设置用户 nacos和密码 nacos			 
   grant all on nacos.* to nacos;  # 赋给nacos用户操作nacos数据库的权限 		
   grant all on nacos01.* to nacos; # 赋给nacos01用户操作nacos数据库的权限 
   grant all on nacos02.* to nacos; # 赋给nacos02用户操作nacos数据库的权限 

6、 虚拟机关闭后,docker重新启动mysql服务:

先启动docker服务: service docker start
docker 启动mysql前,先停止并删除 mysql的容器:docker stop 容器id;docker rm 容器id
然后再执行上边mysql启动时的脚本:docker run
启动完毕后,用Navicat连下是否成功。

搭建nacos集群

准备工作做完,开始正式搭建nacos集群。

执行nacos的脚本

1、下载编译好的nacos包,并分别放到各个服务器的 /usr/local下

/usr/local nacos-server-1.3.2.tar.gz

2、三台服务器中分别解压包。

在三个数据库中分别执行 /usr/local/nacos/conf下的nacos-mysql.sql脚本

修改nacos中application.properties的配置的数据源信息

/usr/local/nacos/conf/application.properties 里的内容:

三台服务器要根据对应的数据库分别修改。

### If use MySQL as datasource:

spring.datasource.platform=mysql

### Count of DB:

db.num=1

### Connect URL of DB:

 db.url.0=jdbc:mysql://192.168.91.129:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=nacos
db.password=nacos

配置集群启动

在nacos/conf目录下,有一个cluster.conf.example配置文件,在这个配置文件中配置这三个节点的ip和端口

mv cluster.conf.example cluster.conf    #先将该文件修改为cluster.conf
  在文本最后将集群机器的地址填上
  192.168.91.129:8847
  192.168.91:130:8847
  192.168.91:131:8847

注意: port端口号要根据 /usr/local/nacos/conf/application.properties 中的server.port进行修改

启动集群

三个节点在 nacos/bin 下执行,sh /startup.sh 启动脚本

启动报错:内存不够

启动过程中,报错内存不够

修改 bin/startup.sh 的脚本


	if [[ "${MODE}" == "standalone" ]]; then
	JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
	JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"

else
    if [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; then
        JAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"
    fi
    JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof


脚本中embedded集群模式下内存大小为2g,将其修改为256m,如果学习使用的话可以试着改的再小一点。

重新启动,启动成功

查看启动日志 /usr/local/nacos/logs/start.out

[root@m bin]# tail -f /usr/local/nacos/logs/start.out
2021-10-17 15:10:39,700 INFO Nacos is starting...

2021-10-17 15:10:40,522 INFO Nacos Log files: /usr/local/nacos/logs

2021-10-17 15:10:40,522 INFO Nacos Log files: /usr/local/nacos/conf

2021-10-17 15:10:40,522 INFO Nacos Log files: /usr/local/nacos/data

2021-10-17 15:10:40,522 INFO Nacos started successfully in cluster mode. use external storage

nacos选举日志:


。。。。。

2021-10-17 14:59:29,710 INFO add listener: com.alibaba.nacos.naming.domains.meta.00-00---000-NACOS_SWITCH_DOMAIN-000---00-00

2021-10-17 14:59:29,751 INFO add listener: com.alibaba.nacos.naming.domains.meta.

2021-10-17 14:59:37,089 INFO vote 192.168.91.130:8848 as leader, term: 3

2021-10-17 14:59:39,939 INFO received illegitimate vote, voter-term:3, votee-term:3

2021-10-17 14:59:42,055 INFO 192.168.91.130:8848 has become the LEADER, local: {"ip":"192.168.91.129:8848","voteFor":"192.168.91.130:8848","term":3,"leaderDueMs":18014,"heartbeatDueMs":5000,"state":"FOLLOWER"}, leader: {"ip":"192.168.91.130:8848","voteFor":"192.168.91.130:8848","term":3,"leaderDueMs":18826,"heartbeatDueMs":5000,"state":"LEADER"}

2021-10-17 14:59:56,447 INFO vote 192.168.91.131:8848 as leader, term: 4

2021-10-17 14:59:57,140 INFO [RAFT] out of date beat, beat-from-term: 3, beat-to-term: 4, remote peer: {"ip":"192.168.91.130:8848","voteFor":"192.168.91.130:8848","term":3,"leaderDueMs":17161,"heartbeatDueMs":5000,"state":"LEADER"}, and leaderDueMs: 19310

2021-10-17 15:00:01,046 INFO 192.168.91.131:8848 has become the LEADER, local: {"ip":"192.168.91.129:8848","voteFor":"192.168.91.131:8848","term":4,"leaderDueMs":15986,"heartbeatDueMs":5000,"state":"FOLLOWER"}, leader: {"ip":"192.168.91.131:8848","voteFor":"192.168.91.131:8848","term":4,"leaderDueMs":19673,"heartbeatDueMs":5000,"state":"LEADER"}

2021-10-17 15:10:12,761 INFO received illegitimate vote, voter-term:1, votee-term:4

2021-10-17 15:10:42,749 INFO received illegitimate vote, voter-term:1, votee-term:4

分别访问三个节点nacos地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bvfHcQ5m-1634462083129)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211017170051110.png)]

如果访问地址页面报错,检查防火墙是否关闭:

  检查防火墙是否关闭: 
   sudo systemctl status firewalld。
	                         firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead) 

   #如果看到inactive(dead)就意味着防火墙关闭了
   #如果看到active(running)就意味着防火墙打开了
     Docs: man:firewalld(1)
   #永久关闭防火墙
	systemctl disable firewalld

firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)

#如果看到inactive(dead)就意味着防火墙关闭了
#如果看到active(running)就意味着防火墙打开了
Docs: man:firewalld(1)
#永久关闭防火墙
systemctl disable firewalld






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要搭建Nacos集群需要以下步骤: 1. 安装Java环境和MySQL数据库。 2. 下载Nacos的安装包,并解压到指定目录。 3. 修改Nacos配置文件,包括数据库连接信息、集群节点信息等。 4. 启动Nacos服务,并检查日志文件,确保服务正常启动。 5. 配置Nacos集群,包括节点间的通信、负载均衡等。 6. 启动Nacos集群,并检查各节点的日志文件,确保集群正常运行。 7. 配置Nacos客户端,使其能够连接到Nacos集群。 8. 测试Nacos集群的功能,包括服务注册、发现、配置管理等。 以上是搭建Nacos集群的基本步骤,具体操作可以参考Nacos官方文档或相关教程。 ### 回答2: Nacos是一个基于云原生的动态服务发现、配置管理和服务管理平台。它可以提供轻巧的分布式服务注册和配置管理解决方案,可以帮助开发团队快速搭建微服务架构。 在Linux操作系统上搭建Nacos集群需要以下步骤: 1. 安装Java环境 Nacos需要Java环境来运行,因此需要先安装Java环境。可以从Oracle官网下载Java安装包,选择对应的Linux版本进行安装。 2. 下载Nacos服务端 从Nacos官网下载Nacos服务端的tar.gz版本,解压到本地目录。 3. 配置Nacos集群 在每个节点上的conf文件夹下创建cluster.conf文件,将所有Nacos节点的IP地址和端口号写入其中,每个节点占一行。例如: 192.168.0.1:8848 192.168.0.2:8848 192.168.0.3:8848 4. 启动Nacos节点 在每个Nacos节点上运行startup.sh脚本,即可启动Nacos节点。 5. 确认集群状态 在任意一个节点上运行命令: sh ${nacos_home}/bin/nacos-cli.sh switch -t 30000 -g config 如果返回集群状态为OK,则说明集群已经搭建成功。 6. 访问Nacos Web控制台 在任意一个节点的浏览器中输入http://localhost:8848/nacos即可进入Nacos Web控制台,开始配置Nacos服务。 除此之外,还需要关注Nacos节点之间的通信是否正常,可以通过ping命令或者telnet命令进行测试。还可以对Nacos进行集群监控和故障排除,以确保Nacos服务的稳定性和可靠性。 ### 回答3: Nacos是阿里巴巴开源的一款服务发现和配置管理平台,而Linux是一个非常流行的开源操作系统。下面我们就来了解一下如何在Linux搭建Nacos集群。 在搭建Nacos集群之前,我们需要准备以下环境: 1.三台Linux服务器 2.JDK1.8及以上 3.Nacos安装包 具体步骤如下: 1.安装JDK 在每台服务器上安装JDK,并设置JAVA_HOME环境变量。 2.下载Nacos 从官网或者镜像网站上下载Nacos的安装包。 3.解压Nacos 将下载好的Nacos安装包解压到各自的服务器上,可以使用命令tar -xvf xxx.tar.gz来解压。 4.修改配置文件 进入解压后的Nacos目录,修改conf文件夹下的nacos-server-cluster.conf和cluster.conf文件,其中nacos-server-cluster.conf配置每个节点的ip地址、端口、用户名、密码等信息;cluster.conf配置集群中所有节点的信息。 5.启动节点 在每个节点上分别使用命令bin/startup.sh start来启动Nacos节点。 6.查看集群状态 使用curl命令来查看集群状态,如curl http://localhost:8848/nacos/v1/ns/raft/state,如果返回结果为"state":2,则表示集群状态正常。 通过以上步骤,就可以在Linux搭建一个Nacos集群,并实现服务发现和配置管理功能。总之,搭建Nacos集群还是比较简单的,只需要按照上面几个步骤进行操作即可。在实际项目中,Nacos集群还可以实现多节点负载均衡,提高系统的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值