CentOS环境下Nacos2.3集成PostgreSQL


title: CentOS环境下Nacos2.3集成PostgreSQL

date: 2023-12-21 19:15:00
categories: Nacos
description: CentOS环境下Nacos2.3集成PostgreSQL

1. 目录

  • [1. 目录](#1. 目录)
  • [2. 简介](#2. 简介)
  • [3. 安装部署](#3. 安装部署)
    • [3.1. 部署模式](#3.1. 部署模式)
    • [3.2. 环境准备](#3.2. 环境准备)
    • [3.3. 下载安装文件](#3.3. 下载安装文件)
    • [3.4. PostgreSQL插件](#3.4. PostgreSQL插件)
      • [3.4.1. 下载地址](#3.4.1. 下载地址)
      • [3.4.2. 结构](#3.4.2. 结构)
      • [3.4.3. 编译](#3.4.3. 编译)
      • [3.4.4. 初始化SQL](#3.4.4. 初始化SQL)
  • [4. 修改配置](#4. 修改配置)
  • [5. 启动服务](#5. 启动服务)
  • [6. 配置开机自启](#6. 配置开机自启)
    • [6.1. 添加nacos.service文件](#6.1. 添加nacos.service文件)
    • [6.2. 加入Nacos服务](#6.2. 加入Nacos服务)
    • [6.3. 设置开机自启](#6.3. 设置开机自启)
    • [6.4. 启动/停止](#6.4. 启动/停止)
  • [7. 可能存在问题](#7. 可能存在问题)

2. 简介

Nacos 是阿里巴巴最新开源的项目,核心定位是 一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台Nacos 提供一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

项目地址:https://github.com/alibaba/nacos/releases。

Nacos 提供四个主要功能:

  • 服务发现和服务运行状况检查

Nacos 使服务易于注册并通过DNS或HTTP接口发现其他服务。 Nacos 还提供服务的实时运行状况检查,以防止向不正常的主机或服务实例发送请求

  • 动态配置管理

动态配置服务使您可以在所有环境中以集中和动态的方式管理所有服务的配置。 Nacos 消除了在更新配置时重新部署应用程序和服务的需求,这使配置更改更加有效和敏捷。

  • 动态DNS服务

Nacos 支持加权路由,使您更轻松地在数据中心内的生产环境中实施中间层负载平衡,灵活的路由策略,流控制和简单的DNS解析服务。它可帮助您轻松实现基于DNS的服务发现,并防止应用程序耦合到特定于供应商的服务发现API。

  • 服务和元数据管理

Nacos提供了一个易于使用的服务仪表板,可帮助您管理服务元数据,配置,kubernetes DNS,服务运行状况和指标统计信息。

3. 安装部署

3.1. 部署模式

  • 单机模式 - 用于测试和单机试用。
  • 集群模式 - 用于生产环境,确保高可用。
  • 多集群模式 - 用于多数据中心场景。

3.2. 环境准备

  • JDK17+
  • PostgreSQL 16.1

3.3. 下载安装文件

从官方网站下载最新安装 latest stable release

这里以nacos-server-x.x.x.tar.gz作为演示版本。

下载完之后,解压文件,这块就没什么好说的,具体在什么目录下,自行定义。为了安全需要,还是创建一个用户nacos用于启停nacos服务。

bash 复制代码
[root@localhost nacos]$ pwd
/data/nacos

3.4. PostgreSQL插件

3.4.1. 下载地址

https://github.com/wuchubuzai2018/nacos-datasource-extend-plugins.git

3.4.2. 结构

下载来时的是源码,文件结构如下:

txt 复制代码
nacos-datasource-plugin-ext
  |---nacos-all-datasource-plugin-ext
  |---nacos-datasource-plugin-ext-base              ---------
  |---nacos-postgresql-datasource-plugin-ext
    |---src
      |---resources
        |---schema
          |---nacos-pg.sql
3.4.3. 编译

下载完毕,编译成功后,nacos-postgresql-datasource-plugin-ext.jar 下生成的 Jar,拷贝至 NACOS_HOMEplugins 文件夹下。

3.4.4. 初始化SQL

PostgrelSQL初始化脚本在 nacos-postgresql-datasource-plugin-ext 路径下 src/resources/schema 下。

4. 修改配置

配置文件也在naocs安装文件夹conf 下,文件名称application.properties,配置文件中提供修改默认端口、访问路径的属性等,我这为演示需要,只添加了数据库配置项,仅供参考。

properties 复制代码
pring.datasource.platform=postgresql

db.num=1
db.url.0=jdbc:postgresql://127.0.0.1:15433/postgres?tcpKeepAlive=true&reWriteBatchedInserts=true&ApplicationName=nacos_java
db.user=postgres
db.password=password
db.pool.config.driverClassName=org.postgresql.Driver

5. 启动服务

独立模式服务运行比较简单,直接指定-m模式命令后的参数启动即可。

复制代码
[naocs@localhost bin]$ sh startup.sh -m standalone

Windows平台中可以双击 startup.cmd 以运行 NacosServer

bash 复制代码
cmd startup.cmd -m standalone

浏览器访问地址:http://ip:port:8848/nacos

输入默认账号密码:nacos/nacos,即可看到

单机独立模式启动成功!!!

在实际生产环境中 Nacos 肯定都是集群模式,一般而言,集群模式至少3个节点。

集群配置文件在安装文件夹confcluster.conf ,将每个 nacos 节点按照IP:PORT格式配置即可,按行分割。

复制代码
//IP:PORT
192.168.9.121:8848
192.168.9.122:8848
192.168.9.122:8848

启动命令sh startup.sh,不带任何参数。

使用 Nacos 集群需要利用负载均衡来代理每个节点,额外的配置非本篇重点介绍,大家自行完成。

6. 配置开机自启

6.1. 添加nacos.service文件

/lib/systemd/system/ 路径下,添加 nacos.service 文件。

复制代码
[Unit]
Description=nacos
After=network.target
  
[Service]
Type=forking
ExecStart=/data/nacos/nacos//bin/startup.sh -m standalone
ExecReload=/data/nacos/nacos/bin/shutdown.sh
ExecStop=/data/nacos/nacos//bin/shutdown.sh
PrivateTmp=true
  
[Install] 
WantedBy=multi-user.target

6.2. 加入Nacos服务

shell 复制代码
systemctl daemon-reload

6.3. 设置开机自启

shell 复制代码
systemctl enable nacos.service

6.4. 启动/停止

shell 复制代码
systemctl start nacos.service

systemctl stop nacos.service

7. 可能存在问题

启动过程中可能存在错误,Nacos 是有 JAVA 开发而成,在启动的时候需要 JDK 版本,在系统环境中已经配置 JAVA_HOME ,在 service 脚本中,会从 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin 这些路径中寻找 javac,需要将我们自己的 JAVA 目录软链接到 /usr/bin/java 即可

所以需要建立软连接

复制代码
ln -s /data/jdk/jdk17/bin/javac /usr/bin/javac

chmod +x /data/jdk/jdk17/bin/javac
相关推荐
Yana.nice1 小时前
openssl将证书从p7b转换为crt格式
java·linux
AI逐月1 小时前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
小白跃升坊1 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey2 小时前
【Linux】线程同步与互斥
linux·笔记
舰长1152 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
zmjjdank1ng2 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.2 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
VekiSon2 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
zl_dfq3 小时前
Linux 之 【进程信号】(signal、kill、raise、abort、alarm、Core Dump核心转储机制)
linux
Ankie Wan3 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc