天天看點

Centos7下Nacos安裝和部署一、什麼是 Nacos?二、單體部署:三、群集部署四、通路Nacos UI界面五、配置Nginx六、搭建SpringBoot項目

一、什麼是 Nacos?

Nacos 是阿裡巴巴的新開源項目,其核心定位是 “一個更易于幫助建構雲原生應用的動态服務發現、配置和服務管理平台”,它支援幾乎所有主流類型的“服務”的發現、配置和管理。架構圖如下:

Centos7下Nacos安裝和部署一、什麼是 Nacos?二、單體部署:三、群集部署四、通路Nacos UI界面五、配置Nginx六、搭建SpringBoot項目

官方文檔:

主流注冊中心産品

Centos7下Nacos安裝和部署一、什麼是 Nacos?二、單體部署:三、群集部署四、通路Nacos UI界面五、配置Nginx六、搭建SpringBoot項目

二、單體部署:

Nacos 确實是極易上手,幾乎免安裝,隻需要簡單的解壓包, 啟動 server 即可,它除了提供配置中心還提供注冊中心的作用,可以替代Eureka。

從nacos官網 https://github.com/alibaba/nacos/releases 下載下傳安裝包,最新正式版:nacos-server-2.0.3.tar.gz,直接解壓就可以了

Centos7下Nacos安裝和部署一、什麼是 Nacos?二、單體部署:三、群集部署四、通路Nacos UI界面五、配置Nginx六、搭建SpringBoot項目

下載下傳:

wget  https://github.com/alibaba/nacos/releases/download/2.0.3/nacos-server-2.0.3.tar.gz
           

解壓:

tar -zxvf nacos-server-2.0.3.tar.gz
           

啟動:

cd /nacos/bin

sh startup.sh -m standalone
           

配置:

可以自定義賬号密碼,并将賬号密碼存儲進我們自己的資料庫,需要修改/nacos/conf/application.properties檔案,nacos預設使用的資料庫為内嵌的cmdb

建立mysql資料庫nacos,并設定字元集utf8

執行/nacos/conf/nacos-mysql.sql中的語句,建立表,并插入資料:

Centos7下Nacos安裝和部署一、什麼是 Nacos?二、單體部署:三、群集部署四、通路Nacos UI界面五、配置Nginx六、搭建SpringBoot項目

修改/nacos/conf/application.properties檔案,如下:

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

修改單機模式:

如果不是部署nacos叢集,則将模式修改為單機模式

打開bin/startup.cmd 檔案,将MODE從cluster改為 standalone,如下:

Centos7下Nacos安裝和部署一、什麼是 Nacos?二、單體部署:三、群集部署四、通路Nacos UI界面五、配置Nginx六、搭建SpringBoot項目

重新開機:

然後根據提示去檢視是否啟動成功在logs下的start.out

Centos7下Nacos安裝和部署一、什麼是 Nacos?二、單體部署:三、群集部署四、通路Nacos UI界面五、配置Nginx六、搭建SpringBoot項目

如果啟動成功但是通路失敗:

防火牆的指令:

檢視防火牆狀态 systemctl status firewalld

開啟防火牆 systemctl start firewalld

關閉防火牆 systemctl stop firewalld

開啟防火牆 service firewalld start

禁止開機啟動防火牆 systemctl disable firewalld.service

先用:systemctl unmask firewalld.service

然後:systemctl start firewalld.service

檢視你的服務的端口号是否對外開放:

查詢已經對外開放的端口

netstat -anp
           

查詢指定端口是否已經開放

firewall-cmd --query-port=8848/tcp
           
Centos7下Nacos安裝和部署一、什麼是 Nacos?二、單體部署:三、群集部署四、通路Nacos UI界面五、配置Nginx六、搭建SpringBoot項目

傳回yes/no。此時也有可能傳回firewalld is not running,此時需要打開防火牆再開放端口。

開放端口号指令:

添加指定需要開放的端口:

firewall-cmd --add-port=8848/tcp --permanent
           
Centos7下Nacos安裝和部署一、什麼是 Nacos?二、單體部署:三、群集部署四、通路Nacos UI界面五、配置Nginx六、搭建SpringBoot項目

重載入添加的端口:

firewall-cmd --reload
           

查詢指定端口是否開啟成功:

firewall-cmd --query-port=8848/tcp
           
Centos7下Nacos安裝和部署一、什麼是 Nacos?二、單體部署:三、群集部署四、通路Nacos UI界面五、配置Nginx六、搭建SpringBoot項目

如果需要停止Nacos服務端,可以執行如下指令:

sh shutdown.sh
           

三、群集部署

四、通路Nacos UI界面

通路:http://192.168.8.150:8848/nacos,輸入預設賬号密碼:nacos,nacos

Centos7下Nacos安裝和部署一、什麼是 Nacos?二、單體部署:三、群集部署四、通路Nacos UI界面五、配置Nginx六、搭建SpringBoot項目

1.輸入預設賬号密碼,看是否可以正常登入

2.這個配置管理項便是nacos的注冊中心服務端了,下面還有一個服務管理,是nacos注冊中心 圖形化界面的服務端。

3.修改賬号密碼,在資料庫中,找到users表,即使用者表,就可以修改其中的賬号和密碼

4.建立密碼,nacos的密碼是使用 org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder 加密的,是以需要我們手動建立一個加密工具類,來生成我們自己的密碼,将密碼寫進users表中,重新開機nacos。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-security</artifactId>
  <version>2.1.4.RELEASE</version>
</dependency>
           
public class App {
	public static void main(String[] args) {
		String pwd = new BCryptPasswordEncoder().encode("123456");
		System.out.println(pwd);
	}
}
           

執行如下sql指令:

insert into users values('nacos','$2a$10$04MGTL.cJNZPpR3rFt/I2.43F.V75NH.5wdK.jngaO9Mc91mfonAO', 1);
​
insert into roles values('nacos', 'ROLE_ADMIN')
           

五、配置Nginx

六、搭建SpringBoot項目

加入依賴

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
           

nacos-config這個依賴就相當于SpringCloud Config,nacos-discovery這個依賴就相當于Eureka。

配置中心

先将nacos-discovery依賴進行注釋,先來實作config

在項目中建立bootstrap.yml檔案,加入以下配置:

配置說明:

spring:
  application:
    name: demo-service #項目名
  profiles:
    active: dev
  cloud:
    nacos:
      # 配置中心
      config:
        # 命名空間id(此處不用public,因public初始化的空間, id為空)
        namespace: ${spring.profiles.active}
        # nacos的ip位址和端口
        server-addr: ${NACOS-HOST:127.0.0.1}:${NACOS-PORT:8848}
        #nacos登入使用者名
        username: nacos
        #nacos登入密碼
        password: nacos
        # 這個就表示 在我們nacos命名空間id為 dev中 有一個data-id 為 demo-service.yml 的配置檔案 讀取這個裡面的配置
        file-extension: yml
        config-retry-time: 300000
        # 共享配置, 可以把公共配置放在同個命名空間下,然後建立一個 common.yml 檔案 ,裡面可以放共用的配置
        shared-configs: common.yml

      # 釋出到注冊中心 (如果沒有使用可以不配)
      discovery:
        # 命名空間id(此處不用public,因public初始化的空間, id為空)
        namespace: ${spring.profiles.active}
        # nacos的ip位址和端口
        server-addr: ${NACOS-HOST:127.0.0.1}:${NACOS-PORT:8848}
           

如果要覆寫共享配置裡面的内容 隻需要在主配置檔案(application.yml)中在寫一遍配置即可 ,主配置優先級高。

bootstrap.yml(bootstrap.properties)用來在程式引導時執行,應用于更加早期配置資訊讀取,如可以使用來配置application.yml中使用到參數等

application.yml(application.properties) 應用程式特有配置資訊,可以用來配置後續各個子產品中需使用的公共參數等。

bootstrap.yml 先于 application.yml 加載
           

如果項目啟動報錯:

java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all server
           

把 config中的server-addr由域名 換成IP加端口号就行了:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.8.150:8848
      config:
        server-addr: 192.168.8.150:8848
        file-extension: yaml
        shared-dataids: miracle-config.yaml
           

繼續閱讀