Nacos注册中心单机启动以及配置成系统服务开机自启动

发布时间:2021年08月12日 阅读:3836 次

前言

    eureka注册中心是AP模式,需要设置心跳机制,Eureka默认开启自我保护机制,如果出现大量的服务实例过期被剔除,注册中心进入自我保护模式,注册表中信息不再被剔除。目的是提高Eureka的可用性,线上更新服务时,并不能及时的把服务给剔除,导致调用不成功,设置enableSelfPreservation=false关闭自我保护机制 也能解决问题,然后找到nacos注册中心

    nacos可以CP模式/AP模式切换。可以手动剔除服务实例,通过消息通知客户端跟新缓存的实例信息。相比之下Nacos有以下优点

  1. Nacos可以在CP模式/AP模式切换,Eureka则是AP模式

  2. Nacos在自动或手动下线服务,使用消息机制通知客户端,服务实例的修改很快响应;Eureka只能通过任务定时剔除无效的服务。

  3. Nacos可以根据namespace命名空间,DataId,Group分组,来区分不同环境(dev,test,prod),不同项目的配置。

一.Nacos下载篇

     下载 在nacos的release notes找到合适的版本和介绍 https://github.com/alibaba/nacos/releases 下载合适的版本 附件也可下载这里我使用的是 1.1.3

二.Nacos安装篇

    单机安装

准备安装包

unzip nacos-server-1.1.3.zip
mkdir /www/server/ -p
mv nacos /www/server/nacos-server-1.1.3
cd /www/server

启动Nacos

 ./startup.sh  -m standalone

检查是否启动成功

ps -ef|grep 8848
lsof -i:8848
netstat -ntlp |grep 8848

浏览器访问

http://ip:8848/nacos/#/login

初始登录信息 nacos/nacos

    数据库配置

创建数据库nacos

create database nacos DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

创建用户名和密码

CREATE USER  'nacos'@'%' IDENTIFIED BY '123456';

赋权

grant ALL PRIVILEGES on nacos.* to 'nacos'@'%';

初始化数据库文件

在Nacos的conf目录下找到nacos-mysql.sql文件,在创建的nacos库中执行sql文件

mysql> use nacos;
Database changed
mysql> show tables;
+----------------------+
| Tables_in_nacos      |
+----------------------+
| config_info          |
| config_info_aggr     |
| config_info_beta     |
| config_info_tag      |
| config_tags_relation |
| group_capacity       |
| his_config_info      |
| roles                |
| tenant_capacity      |
| tenant_info          |
| users                |
+----------------------+
11 rows in set (0.00 sec)


修改nacos server application.properties配置文件

修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码

#database mysql
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos
db.password=123456

三.配置系统服务篇

    设置开机启动

vim /lib/systemd/system/nacos.service
[Unit]
Description=nacos
After=network.target

[Service]
Type=forking
ExecStart=/www/server/nacos/bin/startup.sh -m standalone
ExecReload=/www/server/nacos/bin/shutdown.sh
ExecStop=/www/server/nacos/bin/shutdown.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target

ExecStart这里是单机模式启动命令

如果正常模式需要修改为ExecStart=/www/server/nacos/bin/startup.sh

保存以后执行以下命名

systemctl daemon-reload
systemctl enable nacos.service
systemctl start nacos.service

四.解决错误篇

错误描述

● nacos.service - nacos
   Loaded: loaded (/usr/lib/systemd/system/nacos.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Wed 2021-11-03 23:42:07 CST; 5min ago
  Process: 1064 ExecStart=/www/server/nacos/nacos/bin/startup.sh -m standalone (code=exited, status=1/FAI>

Nov 03 23:42:07 VM-16-13-centos systemd[1]: Starting nacos...
Nov 03 23:42:07 VM-16-13-centos startup.sh[1064]: which: no javac in (/usr/local/sbin:/usr/local/bin:/usr>
Nov 03 23:42:07 VM-16-13-centos startup.sh[1064]: readlink: missing operand
Nov 03 23:42:07 VM-16-13-centos startup.sh[1064]: Try 'readlink --help' for more information.
Nov 03 23:42:07 VM-16-13-centos startup.sh[1064]: dirname: missing operand
Nov 03 23:42:07 VM-16-13-centos startup.sh[1064]: Try 'dirname --help' for more information.
Nov 03 23:42:07 VM-16-13-centos startup.sh[1064]: ERROR: Please set the JAVA_HOME variable in your enviro>
Nov 03 23:42:07 VM-16-13-centos systemd[1]: nacos.service: Control process exited, code=exited status=1
Nov 03 23:42:07 VM-16-13-centos systemd[1]: nacos.service: Failed with result 'exit-code'.
Nov 03 23:42:07 VM-16-13-centos systemd[1]: Failed to start nacos.

错误原因

    因为nacos是由java开发而成,在启动的时候需要JDK版本1.8,在系统环境中已经配置了JAVA_HOME,但是在service脚本中,会从(/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin这些路径中寻找javac,只需要将我们自己的java目录软链接到/usr/bin/java即可 或者在nacos/bin/startup.sh 中修改参数指定目录即可

    方法一

查看java安装位置

[root@VM-8-11-centos server]# which javac
/www/server/jdk1.8.0_281/bin/javac

建立软链接

ln -s /www/server/jdk1.8.0_281/bin/javac /usr/bin/javac

  如果还是无法启动找不到javac,将javac设置为可执行

chmod +x /www/server/jdk1.8.0_281/bin/javac

     方法二

cd /www/server/nacos-server-1.1.3/bin
vim startup.sh

修改此处为java位置

image.png

修改为

image.png







nacos-server-1.1.3.zip


Tag:
相关文章