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
相关推荐
Lary_Rock1 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
云飞云共享云桌面3 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq3 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮4 小时前
Linux 使用中的问题
linux·运维
dsywws5 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零6 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
小林熬夜学编程7 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
程思扬8 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
sun0077008 小时前
拷贝 cp -rdp 和 cp -a
linux·运维·服务器
wowocpp8 小时前
ubuntu 22.04 server 安装 anaconda3
linux·运维·ubuntu