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
相关推荐
小糖学代码7 小时前
LLM系列:1.python入门:3.布尔型对象
linux·开发语言·python
shizhan_cloud7 小时前
Shell 函数的知识与实践
linux·运维
Deng8723473487 小时前
代码语法检查工具
linux·服务器·windows
云计算老刘9 小时前
3.Shell 变量基础知识
chrome·正则表达式·centos·云计算
霍夫曼9 小时前
UTC时间与本地时间转换问题
java·linux·服务器·前端·javascript
siriuuus10 小时前
Redis 安装、多实例部署、主从复制及 Cluster 实践
数据库·redis·centos
月熊10 小时前
在root无法通过登录界面进去时,通过原本的普通用户qiujian如何把它修改为自己指定的用户名
linux·运维·服务器
大江东去浪淘尽千古风流人物11 小时前
【DSP】向量化操作的误差来源分析及其经典解决方案
linux·运维·人工智能·算法·vr·dsp开发·mr
赖small强12 小时前
【Linux驱动开发】NOR Flash 技术原理与 Linux 系统应用全解析
linux·驱动开发·nor flash·芯片内执行
IT运维爱好者13 小时前
【Linux】LVM理论介绍、实战操作
linux·磁盘扩容·lvm