京东云上centos8.2 安装 consul1.11.1


做个笔记下

--

前言

部分内容有参考网友的,但是地址不记得了!

安装内容基本参考官网的和上一个网友的

官网地址:

https://www.consul.io/downloads

以下是使用root方式安装的。

如果是consul,则建议先创建consul用户,再以consul登录

安装

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum -y install consul
注意:root用户,省略sudu

配置


启动服务配置-修改启动文件consul.service
[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl

[Service]
EnvironmentFile=/etc/consul.d/consul.env
User=root
Group=root
ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d/
#不持久化 -dev
#ExecStart=/usr/bin/consul agent -dev  -config-dir=/etc/consul.d/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

--

consul参数配置

具体可以看 https://www.consul.io/docs/agent/options

可以命令行,可以是json,hcl之类的,主要是为了兼容老习惯


添加额外的参数文件(在/etc/consul.d/下添加sever.json,注意只要是json结尾即可,叫啥无所谓)
{
  "datacenter": "dc1",
  "data_dir": "/data/data/consul",
  "log_level": "INFO",
  "node_name": "foobar",
  "server": true,
  "ports": {
        "http": 8500,
        "https": -1,
        "dns": 8600,
        "grpc": -1,
        "serf_lan": 8001,
        "serf_wan": 8002,
        "server": 8003
    }  
}

另外,这个版本中,有个默认的 /etc/consul.d/consul.hcl
修改几个参数:

# 任意客户端都可以链接--2021
client_addr = "0.0.0.0"
# 启动内置ui-web管理--2021dd
ui_config{
  enabled = true
}
bind_addr = "0.0.0.0"
advertise_addr = "127.0.0.1"

# 指定只有一个节点,否则总是会提示 No cluster leader
bootstrap_expect=1

这些配置的大体意思就是 使用server模式(单节点)启动,web端口为8500,任意客户端可以连接!

最后看下启动后的界面

 看下管理界面

最后,能不能用,还得通过springboot来验证:https://www.cnblogs.com/MrSi/p/13961890.html

--- 根据以上的提示

Springboot工程验证

1.使用sts创建一个springboot工程,pom配置如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.6.2version>
        <relativePath/> 
    parent>
    <groupId>org.lzfgroupId>
    <artifactId>vehicle-baseartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>consul-testname>
    <description>Demo project for Spring Bootdescription>
    <properties>
        <java.version>1.8java.version>
        <spring-cloud.version>2021.0.0spring-cloud.version>
    properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-bootstrapartifactId>
        dependency>
        
        <dependency>
           <groupId>org.springframework.bootgroupId>
           <artifactId>spring-boot-devtoolsartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-jdbcartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-consul-configartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-consul-discoveryartifactId>
        dependency>
         
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <scope>runtimescope>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
    dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>${spring-cloud.version}version>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

project>

2.创建一个application.properties

#开发-热部署
spring.devtools.restart.enabled=true
server.port=8762
# Spring
spring.application.name=customer-service

#actuator监控信息
info.app.name=应用服务器-8762
info.company.name=org.lzf
info.build.artifactId=cloud-customer
info.build.version=1.0-SNAPSHOT
#其余省略

3.创建一个boostrap.yml

spring:
  cloud:
    consul:
      config:
        enabled: true
        format: YAML
        data-key: data
        watch:
          enabled: true
        prefix: config
      discovery:
        enabled: true
        heartbeat:
          enabled: true
        health-check-interval: 5s
        health-check-path: /actuator/health
        instance-id: customer-service.8762
        prefer-ip-address: true
      enabled: true
      host: 114.67.246.199
      port: 8500    

4.启动类记得加注解 @EnableDiscoveryClient

最后检测是ok的: