higress【一 环境搭建】

higress(docker环境)+nacos (注册中心+服务中心) 环境搭建

本实例使用阿里巴巴最新的higress和nacos为服务体系搭建微服务集群的教程。首先在本地环境(Windows 10)部署 nacos(standalone模式),然后编写springCloudAlibaba 微服务,然后再ubuntu中搭建higress服务(由于当前最新版本必须依赖容器执行,所以需要在docker或者k8s环境下搭建,本人使用现有的ubuntu中的docker进行安装部署,各位可以按照自己的情况自由搭建)。

一、各个软件版本:

higress 1.1.0、nacos 2.2.3 ,Ubuntu 22.04 LTS,docker 20.10.18,springboot 2.7.6,springCloudAlibaba 2021.0.5.0,springCloud 2021.0.5

二、nacos 部署

1. 由于nacos 没有强依赖容器,所以本人直接下载jar包本地部署。

下载地址:https://github.com/alibaba/nacos/releases/tag/2.2.3,下载以.zip为后缀的压缩包。

 解压到本地,修改配置文件 /conf/application.properties ,添加一下配置(数据库信息根据自己的实际情况进行配置,我这里是使用的MySQL数据库,并创建了名称为nacos的库):

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&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456
# 由于higress暂时不支持nacos的认证连接,所以这里关闭nacos的认证
nacos.core.auth.enabled=false

在MySQL数据库中名称为nacos的库中执行SQL(conf/mysql-schema.sql),创建nacos的持久化表。

2. 启动nacos:进入nacos解压包下的 bin 目录,以管理员身份运行命令行,执行命令:

startup -m standalone

三、创建自定义微服务:

本人创建了三个模块如下:

 higress-producer(生产者)和higress-consumer(消费者)的核心配置如下:

maven的pom文件核心依赖:

<!--        springcloud2020.*以后禁用bootstrap,需要单独添加依赖支持-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-loadbalancer</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

bootstrap.yml配置(主要是进行nacos配置中心的配置)如下:

# 远程配置文件dataId
spring:
  application:
    name: higress-producer
#    开启profiles,远程nacos配置文件 dataId:higress-producer-dev
#  profiles:
#    active: dev
  cloud:
#    指定springcloud选择符合前缀的IP作为服务注册IP, 支持正则表达式
    inetutils:
      preferred-networks:
        - 10.*
    nacos:
      username: nacos
      password: nacos
      config:
        server-addr: 10.53.207.47:8848
        namespace: 120523fa-052a-4a2e-abb1-e572ddfef2f5
        file-extension: yaml
        refresh-enabled: true
        enabled: true
#        context-path: /nacos

#----------------配置约定-------------
#  最终拼接出来的就是:DataId:higress-producer-dev.yaml  (一定要注意约定,否则加载不到配置)
#  Data ID = ${spring.cloud.nacos.config.prefix}.${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
#  Group = ${spring.cloud.nacos.config.group}

在 nacos中配置注册中心信息(生产者和服务者的端口号注意不要冲突):

server:
  port: 9090
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 10.53.207.47:8848
        namespace: 120523fa-052a-4a2e-abb1-e572ddfef2f5
#        ip: bom-center.cn
#    loadbalancer:
#      ribbon:
#        enabled: false
logging:
  path: /log
  level:
    root: INFO

服务启动,注册服务至nacos中,如下图:

 

三、higress 安装

1. 安装前,为了避免端口冲突而安装失败,先通过环境变量配置自定义端口:

编辑 /etc/profile 文件,添加以下内容

export CONSOLE_PORT=9200
export GATEWAY_HTTP_PORT=9500
CONSOLE_PORT 环境变量指定 higress 的控制台监听的端口
GATEWAY_HTTP_PORT 环境变量指定 higress 的网关的监听端口。
然后执行命令 source /etc/profile 使环境变量生效。

2. 然后在ubuntu上运行以下安装命令(注意ubuntu主机和nacos服务的主机之间网络要通,且ubuntu主机必须可以连接互联网):

curl -fsSL https://higress.io/standalone/get-higress.sh | bash -s -- -c nacos://10.53.207.47:8848 --nacos-ns='11fced6f-7c2e-4c9e-9de2-8637fc369e0c' --nacos-username=nacos --nacos-password=nacos -p admin

-c:指定nacos服务地址和端口

--nacos-ns :指定higress在nacos中配置信息的命名空间,higress在安装时会把配置信息写入对应的命名空间下。

--nacos-username 和 --nacos-password :指定nacos的用户名密码(因为higress暂时不支持nacos的认证连接,这两个配置不需要配)

-p :指定higress 控制台登录的密码,默认账号密码:admin/admin

安装成功后执行:docker ps 命令,结果如下:

 可以看到higress各个服务模块已经成功运行了。

如果安装过程中出现异常而退出了,可以运行安装目录下 /higress/bin/shutdown.sh ,然后彻底删除 higress 文件夹,然后重新运行第 2 部的安装命令。

/higress/bin/ 目录下的 shutdown.sh 关闭并移除 higress 的相关容器,startup.sh 创建并运行 higress 的相关容器。

在运行启动的时候如果 precheck 服务检查不通过,higress无法启动,可以尝试编辑 higress/compose/.env 文件,删除其中的 nacos服务 的用户名和密码(因为nacos关闭了服务认证,如果higress安装的第 2 部指定了nacos的账号和密码,则precheck启动时会检查认证,higress服务认证无法通过,导致服务无法启动),然后顺序执行 shutdown.sh ,startup.sh。

3. 配置网关路由

a. 登录higress控制台,在 《服务来源》菜单中配置服务信息,如下图:

配置服务来源之后,进入《服务列表》菜单,显示如下服务清单,如果可以看到服务内容,说明higress已经从nacos中拉取服务信息成功。

 b. 在《域名管理》菜单下添加域名,用来标识应用和服务。

 c. 在《路由管理》菜单中创建并配置应用服务的路由信息

 d. 验证请求,在linux系统中通过higress网关访问应用的服务接口,注意需要在请求中添加请求头 ,请求头名称 “host”,值 是我们在higress中配置的域名 “higress.com”。访问路径格式:

http:// higress网关ip higress网关端口 应用程序服务路径

curl --location --request GET 'http://localhost:9500/producer/host' \
--header 'host: higress.com'

 

posted @ 2023-07-18 15:42  蓝迷梦  阅读(3535)  评论(1)    收藏  举报