Apollo&&Eureka安装配置


# Apollo安装

准备:

环境要求:jdk1.8  mysql5.7.27

下载:https://github.com/ctripcorp/apollo/wiki

![image-20201127141729485](Apollo安装.assets/image-20201127141729485.png)

***

上传压缩包:
![image-20201127142154770](Apollo安装.assets/image-20201127142154770.png)

在Apollo目录下创建三个文件夹,因为在同一目录下解压会有名称相同的文件。

在三个文件夹下分别解压,logs是记录日志的文件。

下载sql文件:生成数据库:

地址:同上找一下。apolloconfigdb.sql和apolloportaldb.sql 导入MySQL生成数据库。

上传sql文件到/root/目录下:

![image-20201127143125517](Apollo安装.assets/image-20201127143125517.png)

导入mysql:

~~~shell
mysql> source /root/apolloconfigdb.sql
mysql> source /root/apolloportaldb.sql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ApolloConfigDB     |
| ApolloPortalDB     |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

mysql> flush privileges;
~~~



![image-20201127143258138](Apollo安装.assets/image-20201127143258138.png)

***

### 三个服务的配置信息:

#### 修改一:

~~~shell
每个对应文件下有个/config/application-github.properties文件,修改数据库url 用户 密码。
[root@docker-angent_1 ~]# cd /apollo/adminservice/apollo-adminservice-1.3.0/config/
[root@docker-angent_1 config]# vim application-github.properties 
# DataSource
spring.datasource.url = jdbc:mysql://10.160.103.100:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = 123
别遗漏,改三个文件!!
~~~

![image-20201127143732841](Apollo安装.assets/image-20201127143732841.png)

***

#### 修改二:

~~~shell
修改startup.sh文件:
同样:每个对应文件下有个scripts/startup.sh文件
[root@docker-angent_1 scripts]# pwd
/apollo/adminservice/apollo-adminservice-1.3.0/scripts
[root@docker-angent_1 scripts]# vim startup.sh 
#!/bin/bash
SERVICE_NAME=apollo-adminservice
## Adjust log dir if necessary
LOG_DIR=/apollo/logs   修改日志地址
## Adjust server port if necessary
SERVER_PORT=9002    是否被占用
别遗漏,改三个文件!!
~~~

![image-20201127144441022](Apollo安装.assets/image-20201127144441022.png)

***

#### 修改三:

~~~shell
修改portal服务下的meta配置:
[root@docker-angent_1 ~]# cd /apollo/portal/apollo-portal-1.3.0/config
[root@docker-angent_1 config]# vim apollo-env.properties
local.meta=http://localhost:9001
dev.meta=http://localhost:9001
fat.meta=http://fill-in-fat-meta-server:8080
uat.meta=http://fill-in-uat-meta-server:8080
lpt.meta=${lpt_meta}
pro.meta=http://fill-in-pro-meta-server:8080
~~~

***



### 修改数据库meta地址:

~~~shell

mysql> use ApolloConfigDB;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+--------------------------+
| Tables_in_ApolloConfigDB |
+--------------------------+
| AccessKey                |
| App                      |
| AppNamespace             |
| Audit                    |
| Cluster                  |
| Commit                   |
| GrayReleaseRule          |
| Instance                 |
| InstanceConfig           |
| Item                     |
| Namespace                |
| NamespaceLock            |
| Release                  |
| ReleaseHistory           |
| ReleaseMessage           |
| ServerConfig             |
+--------------------------+
16 rows in set (0.01 sec)

mysql> use ServerConfig;
ERROR 1049 (42000): Unknown database 'ServerConfig'
mysql> select * from ServerConfig;
+----+------------------------------+---------+-------------------------------+---------------------------------------------------------------------------------------------+-----------+----------------------+------------------------+---------------------------+---------------------+
| Id | Key                          | Cluster | Value                         | Comment                                                                                     | IsDeleted | DataChange_CreatedBy | DataChange_CreatedTime | DataChange_LastModifiedBy | DataChange_LastTime |
+----+------------------------------+---------+-------------------------------+---------------------------------------------------------------------------------------------+-----------+----------------------+------------------------+---------------------------+---------------------+
|  1 | eureka.service.url           | default | http://localhost:8080/eureka/ | Eureka服务Url,多个service以英文逗号分隔                                                    |           | default              | 2020-11-27 14:28:57    |                           | 2020-11-27 14:28:57 |
|  2 | namespace.lock.switch        | default | false                         | 一次发布只能有一个人修改开关                                                                |           | default              | 2020-11-27 14:28:57    |                           | 2020-11-27 14:28:57 |
|  3 | item.value.length.limit      | default | 20000                         | item value最大长度限制                                                                      |           | default              | 2020-11-27 14:28:57    |                           | 2020-11-27 14:28:57 |
|  4 | config-service.cache.enabled | default | false                         | ConfigService是否开启缓存,开启后能提高性能,但是会增大内存消耗!                           |           | default              | 2020-11-27 14:28:57    |                           | 2020-11-27 14:28:57 |
|  5 | item.key.length.limit        | default | 128                           | item key 最大长度限制                                                                       |           | default              | 2020-11-27 14:28:57    |                           | 2020-11-27 14:28:57 |
+----+------------------------------+---------+-------------------------------+---------------------------------------------------------------------------------------------+-----------+----------------------+------------------------+---------------------------+---------------------+
5 rows in set (0.00 sec)

mysql> exit   
# eureka地址修改为真实的地址:
mysql> update ServerConfig set Value="http://10.162.1.76:8761/eureka/" where id = 1;
-----------------------------------------------------------
设置最大连接数为1500、默认是100太小了。
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 1000  |
+-----------------+-------+
1 row in set (0.02 sec)

mysql> set global max_connections = 1500;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 1500  |
+-----------------+-------+
1 row in set (0.00 sec)

~~~

![image-20201127152112832](Apollo安装.assets/image-20201127152112832.png)

***

#### 启动三个服务

启动三个/scripts/startup.sh 注意服务的启动顺序:

configservice—adminservice—portal











### 核算微服务apollo配置与使用

1. 使用apollo新建项目添加配置文件

1.1. 登录apollo

测试环境地址:http://10.162.1.76:9003/

用户名:apollo

密码:admin

1.2. 新建项目

![img](Apollo安装.assets/wps5AB2.tmp.jpg) 

输入ID与名称,一般与应用名保持一致,输入完成点击提交

![img](Apollo安装.assets/wps5AB3.tmp.jpg) 

默认application.properties,核算配置文件为application.yml,需要新建namespace,点击添加namespace

![img](Apollo安装.assets/wps5AB4.tmp.jpg) 

点击创建namespace

![img](Apollo安装.assets/wps5AB5.tmp.jpg) 

点击private

![img](Apollo安装.assets/wps5AB6.tmp.jpg) 

选择yml输入application,点击提交

![img](Apollo安装.assets/wps5AB7.tmp.jpg) 

点击返回项目首页

![img](Apollo安装.assets/wps5AB8.tmp.jpg) 

点击编辑

![img](Apollo安装.assets/wps5AB9.tmp.jpg) 

粘贴进去配置文件的所有内容(注意license内容是单行的,出现以下情况需要删除回车符),然后点击✔号

![img](Apollo安装.assets/wps5ABA.tmp.jpg) 

点击发布

![img](Apollo安装.assets/wps5ABB.tmp.jpg) 

![img](Apollo安装.assets/wps5ABC.tmp.jpg) 

这样apollo项目就建好了,如果一个应用在多个环境使用apollo配置,只需要新建集群即可,步骤如下:

点击添加集群

![img](Apollo安装.assets/wps5ABD.tmp.jpg) 

输入集群名称

![img](Apollo安装.assets/wps5ABE.tmp.jpg) 

点击返回项目首页,这样就有一个环境单独使用的配置

![img](Apollo安装.assets/wps5ABF.tmp.jpg) 

按照之前步骤添加配置信息即可

1.3. 修改项目配置使用apollo

在配置文件bootstrap.yml中添加apollo

注意信息如下如果多个环境新建了多个集群,每个环境的cluster都要改为相应的集群名称

app:

 id: ycloans-file-service

apollo:

 meta: http://10.200.9.7:9001

 cluster: DEV  #集群名称

 cacheDir: ../apollo/  #apollo配置文件存放目录

 bootstrap:

  enabled: ***\*true\****

  namespace: application.yml

应用的main方法添加相应的注解

@EnableApolloConfig({"application.yml"})

![img](Apollo安装.assets/wps5AD0.tmp.jpg) 

以上就完成了apollo的配置使用。

ycloans-pay-service (namespace  配置)

~~~shell
EUREKA:
eureka.instance.prefer-ip-address = true
eureka.instance.instanceId = ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
eureka.instance.lease-renewal-interval-in-seconds = 5
eureka.instance.lease-expiration-duration-in-seconds = 10
eureka.instance.status-page-url-path = /management/info
eureka.instance.health-check-url-path = /management/health
eureka.instance.metadata-map.profile = ${spring.profiles.active}
eureka.instance.metadata-map.version = ${info.project.version}
eureka.client.service-url.defaultZone = http://10.162.1.76:8761/eureka/,http://10.162.1.100:8762/eureka/
eureka.client.enabled = true
eureka.client.healthcheck.enabled = true
eureka.client.fetch-registry = true
eureka.client.register-with-eureka = true
eureka.client.instance-info-replication-interval-seconds = 10
eureka.client.registry-fetch-interval-seconds = 10
----------------------------------------------------------
############################################
####   ActiveMq 消息队列配置
############################################
# 采用的消息队列类型:
# 0-default,仅内存模拟
# 1-redisMq
# 2-activeMq
spring.mq.type = 2

# 消费通知方式 0-开启线程调用borker接口; 1-开启线程放入消息队列
# 如果此值被设置成1,则broker启动时需要开启监听通知结果的队列,队列命名
# 规则是: 业务对列:result
reliable.message.consumer.notify.type = 1
reliable.message.consumer.notify.thread.corePerSize = 100
reliable.message.consumer.notify.thread.maxPerSize = 500
reliable.message.consumer.notify.thread.keepAliveTime = 500
reliable.message.consumer.notify.thread.blockingQueueSize = 500

test.activemq.net-address = 127.0.0.1
# spring.activemq.broker-url = tcp://10.162.1.245:61616 测试环境
spring.activemq.broker-url = tcp://10.162.1.100:61616
#spring.activemq.broker-url = tcp://activemq-net:61616
spring.activemq.user = admin
spring.activemq.password = admin
# 在考虑结束之前等待的时间
spring.activemq.close-timeout = 15s
# 默认代理URL是否应该在内存中。如果指定了显式代理,则忽略此值。
spring.activemq.in-memory = false
# 是否在回滚消息之前停止消息传递。这意味着当启用此命令时,消息顺序不会被保留。
spring.activemq.non-blocking-redelivery = false
# 等待消息发送响应的时间。设置为0等待永远。
spring.activemq.send-timeout = 0
spring.activemq.queue-name = aa:pay:mock
spring.activemq.response-queue-name = aa:pay:mock:result
# 表示使用Topic模式还是queue模式,默认使用topic模式
spring.activemq.toTopic = true
spring.pool.enabled = true
spring.pool.max-connections = 10
spring.pool.idle-timeout = 30000
#默认情况下activemq提供的是queue模式,若要使用topic模式需要配置下面配置
spring.jms.pub-sub-domain = true
# 是否信任所有包
#spring.activemq.packages.trust-all=
# 要信任的特定包的逗号分隔列表(当不信任所有包时)
#spring.activemq.packages.trusted=
# 当连接请求和池满时是否阻塞。设置false会抛“JMSException异常”。
#spring.activemq.pool.block-if-full=true
# 如果池仍然满,则在抛出异常前阻塞时间。
#spring.activemq.pool.block-if-full-timeout=-1ms
# 是否在启动时创建连接。可以在启动时用于加热池。
#spring.activemq.pool.create-connection-on-startup=true
# 是否用Pooledconnectionfactory代替普通的ConnectionFactory。
#spring.activemq.pool.enabled=false
# 连接过期超时。
#spring.activemq.pool.expiry-timeout=0ms
# 连接空闲超时
#spring.activemq.pool.idle-timeout=30s
# 连接池最大连接数
#spring.activemq.pool.max-connections=1
# 每个连接的有效会话的最大数目。
#spring.activemq.pool.maximum-active-session-per-connection=500
# 当有"JMSException"时尝试重新连接
#spring.activemq.pool.reconnect-on-exception=true
# 在空闲连接清除线程之间运行的时间。当为负数时,没有空闲连接驱逐线程运行。
#spring.activemq.pool.time-between-expiration-check=-1ms
# 是否只使用一个MessageProducer
#spring.activemq.pool.use-anonymous-producers=true
----------------------------------
YCLOANS-PUBLIC:
license.licenseContext = <?xml version="1.0" encoding="UTF-8"?><license build-time="Mon May 06 11:39:46 CST 2019" validate-code="FC6107A40B8E7CF356B4EC5CC39A9CA6"><element name="license_code">0000011874</element><element name="product_code">0000001122</element><element name="product_name_zh-cn">宇信科技基于微服务框架统一开发平台</element><element name="product_name_en-us">YUSP</element><element name="version_major">1</element><element name="version_sub">0</element><element name="version_publish">1</element><element name="complie_date">2018-03-20</element><element name="license_type">内部试用许可证</element><element name="customer_name"/><element name="contract_code"/><element name="license_start_time">2019-05-06</element><element name="license_end_time">2119-06-01</element></license>
license.licenseModel = TRIAL

management.health.rabbit.enabled = false
management.health.ycloansmq.enabled = true
management.endpoints.web.base-path = /api/system/actuator
management.endpoint.health.show-details = always
management.endpoints.web.exposure.include = *
management.security.enabled = false

swagger.enabled = true
swagger.title = YUSP APP ycloans-starter Application API
swagger.description = YUSP APP ycloans-starter API documentation
swagger.version = 2.1.1.RELEASE

spring.liquibase.enabled = false
spring.liquibase.change-log = classpath:config/liquibase/master.xml
spring.cloud.inetutils.preferred-networks = 172.20.*
spring.jackson.serialization.INDENT_OUTPUT = true
spring.messages.cache-duration = 1

pagehelper.helperDialect = mysql
pagehelper.reasonable = true

mapper.mappers[0] = cn.com.yusys.yusp.commons.mapper.CommonMapper
-----------------------------------------------
MYSQL:

######################################
##   MYSQL数据库配置
######################################
spring.datasource.url = jdbc:mysql://10.162.1.102:3306/apolloconfigdb?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username = apollo
spring.datasource.password = apollo
spring.datasource.hikari.minimum-idle = 20
spring.datasource.hikari.maximum-pool-size = 500
spring.datasource.hikari.data-source-properties.cachePrepStmts = true
spring.datasource.hikari.data-source-properties.prepStmtCacheSize = 250
spring.datasource.hikari.data-source-properties.prepStmtCacheSqlLimit = 2048
spring.datasource.hikari.data-source-properties.useServerPrepStmts = true
# 特别注意此处,否则存储mysql将无效
mybatis.mapperLocations = classpath*:mapper/**/*.xml
mybatis.configuration.map-underscore-to-camel-case = true

~~~

![image-20201201091750509](Apollo安装.assets/image-20201201091750509.png)

![image-20201201091919475](Apollo安装.assets/image-20201201091919475.png)

![image-20201201092011593](Apollo安装.assets/image-20201201092011593.png)

![image-20201201092101493](Apollo安装.assets/image-20201201092101493.png)

ycloans-agent-service 

~~~shell
application:
spring.application.name = ycloans-pay-service
spring.liquibase.enabled = false
spring.liquibase.change-log = classpath:config/liquibase/master.xml
spring.cloud.inetutils.preferred-networks = 10
spring.cloud.inetutils.ignored-interfaces = lo,lo:0
spring.jackson.serialization.INDENT_OUTPUT = true
spring.datasource.driver-class-name = oracle.jdbc.OracleDriver
spring.datasource.type = com.zaxxer.hikari.HikariDataSource
spring.datasource.url = jdbc:oracle:thin:@10.162.1.57:1521:orcl
spring.datasource.username = ycloanspay
spring.datasource.password = ycloanspay
spring.datasource.hikari.minimum-idle = 2
spring.datasource.hikari.maximum-pool-size = 2
spring.datasource.hikari.data-source-properties.cachePrepStmts = true
spring.datasource.hikari.data-source-properties.prepStmtCacheSize = 250
spring.datasource.hikari.data-source-properties.prepStmtCacheSqlLimit = 2048
spring.datasource.hikari.data-source-properties.useServerPrepStmts = true
spring.messages.cache-duration = 1



############################################
####   ActiveMq 消息队列配置
############################################
# 采用的消息队列类型:
# 0-default,仅内存模拟
# 1-redisMq
# 2-activeMq
spring.mq.type = 2

# 消费通知方式 0-开启线程调用borker接口; 1-开启线程放入消息队列
# 如果此值被设置成1,则broker启动时需要开启监听通知结果的队列,队列命名
# 规则是: 业务对列:result
reliable.message.consumer.notify.type = 1
reliable.message.consumer.notify.thread.corePerSize = 100
reliable.message.consumer.notify.thread.maxPerSize = 500
reliable.message.consumer.notify.thread.keepAliveTime = 500
reliable.message.consumer.notify.thread.blockingQueueSize = 500

test.activemq.net-address = 127.0.0.1
# spring.activemq.broker-url = tcp://10.162.1.245:61616 测试环境
spring.activemq.broker-url = tcp://10.162.1.100:61616
#spring.activemq.broker-url = tcp://activemq-net:61616
spring.activemq.user = admin
spring.activemq.password = admin
# 在考虑结束之前等待的时间
spring.activemq.close-timeout = 15s
# 默认代理URL是否应该在内存中。如果指定了显式代理,则忽略此值。
spring.activemq.in-memory = false
# 是否在回滚消息之前停止消息传递。这意味着当启用此命令时,消息顺序不会被保留。
spring.activemq.non-blocking-redelivery = false
# 等待消息发送响应的时间。设置为0等待永远。
spring.activemq.send-timeout = 0
spring.activemq.queue-name = CommonPaySendQueue
spring.activemq.response-queue-name = CommonPayResultQueue

spring.activemq.topic-name = abc
spring.activemq.respone-topic-name = abc

# 表示使用Topic模式还是queue模式,默认使用topic模式
spring.activemq.toTopic = true
spring.pool.enabled = true
spring.pool.max-connections = 10
spring.pool.idle-timeout = 30000
#默认情况下activemq提供的是queue模式,若要使用topic模式需要配置下面配置
spring.jms.pub-sub-domain = true


############################################
####   业务参数配置
############################################
moneyPay.pay = http://10.162.4.92:8080/paybatch/receipt/order11
moneyPay.qry = http://10.162.4.92:8080/paybatch/receipt/query11
moneyPay.notify = http://10.162.4.92:8080/paybatch/receipt/batch/state/notify11


############################################
####   注册中心 配置
############################################
eureka.instance.prefer-ip-address = true
eureka.instance.instanceId = ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
eureka.instance.lease-renewal-interval-in-seconds = 5
eureka.instance.lease-expiration-duration-in-seconds = 10
eureka.instance.status-page-url-path = /management/info
eureka.instance.health-check-url-path = /management/health
eureka.instance.metadata-map.profile = ${spring.profiles.active}
eureka.instance.metadata-map.version = ${info.project.version}
eureka.client.service-url.defaultZone = http://10.162.1.76:8761/eureka/,http://10.162.1.100:8762/eureka/
eureka.client.enabled = true
eureka.client.healthcheck.enabled = true
eureka.client.fetch-registry = true
eureka.client.register-with-eureka = true
eureka.client.instance-info-replication-interval-seconds = 10
eureka.client.registry-fetch-interval-seconds = 10

~~~

![image-20201201092325873](Apollo安装.assets/image-20201201092325873.png)

 ycloans-common-reliable-message

~~~shell
EUREKA:
eureka.instance.prefer-ip-address = true
eureka.instance.instanceId = ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
eureka.instance.lease-renewal-interval-in-seconds = 5
eureka.instance.lease-expiration-duration-in-seconds = 10
eureka.instance.status-page-url-path = /management/info
eureka.instance.health-check-url-path = /management/health
eureka.instance.metadata-map.profile = ${spring.profiles.active}
eureka.instance.metadata-map.version = ${info.project.version}
eureka.client.service-url.defaultZone = http://10.162.1.76:8761/eureka/,http://10.162.1.100:8762/eureka/
eureka.client.enabled = true
eureka.client.healthcheck.enabled = true
eureka.client.fetch-registry = true
eureka.client.register-with-eureka = true
eureka.client.instance-info-replication-interval-seconds = 10
eureka.client.registry-fetch-interval-seconds = 10
--------------------------------
ActiveMq:
############################################
####   ActiveMq 消息队列配置
############################################
# 采用的消息队列类型:
# 0-default,仅内存模拟
# 1-redisMq
# 2-activeMq
spring.mq.type = 2

# 消费通知方式 0-开启线程调用borker接口; 1-开启线程放入消息队列
# 如果此值被设置成1,则broker启动时需要开启监听通知结果的队列,队列命名
# 规则是: 业务对列:result
reliable.message.consumer.notify.type = 1
reliable.message.consumer.notify.thread.corePerSize = 100
reliable.message.consumer.notify.thread.maxPerSize = 500
reliable.message.consumer.notify.thread.keepAliveTime = 500
reliable.message.consumer.notify.thread.blockingQueueSize = 500

test.activemq.net-address = 127.0.0.1
# spring.activemq.broker-url = tcp://10.162.1.245:61616 测试环境
spring.activemq.broker-url = tcp://10.162.1.100:61616
#spring.activemq.broker-url = tcp://activemq-net:61616
spring.activemq.user = admin
spring.activemq.password = admin
# 在考虑结束之前等待的时间
spring.activemq.close-timeout = 15s
# 默认代理URL是否应该在内存中。如果指定了显式代理,则忽略此值。
spring.activemq.in-memory = false
# 是否在回滚消息之前停止消息传递。这意味着当启用此命令时,消息顺序不会被保留。
spring.activemq.non-blocking-redelivery = false
# 等待消息发送响应的时间。设置为0等待永远。
spring.activemq.send-timeout = 0
spring.activemq.queue-name = aa:pay:mock
spring.activemq.response-queue-name = aa:pay:mock:result
# 表示使用Topic模式还是queue模式,默认使用topic模式
spring.activemq.toTopic = true
spring.pool.enabled = true
spring.pool.max-connections = 10
spring.pool.idle-timeout = 30000
#默认情况下activemq提供的是queue模式,若要使用topic模式需要配置下面配置
spring.jms.pub-sub-domain = true
# 是否信任所有包
#spring.activemq.packages.trust-all=
# 要信任的特定包的逗号分隔列表(当不信任所有包时)
#spring.activemq.packages.trusted=
# 当连接请求和池满时是否阻塞。设置false会抛“JMSException异常”。
#spring.activemq.pool.block-if-full=true
# 如果池仍然满,则在抛出异常前阻塞时间。
#spring.activemq.pool.block-if-full-timeout=-1ms
# 是否在启动时创建连接。可以在启动时用于加热池。
#spring.activemq.pool.create-connection-on-startup=true
# 是否用Pooledconnectionfactory代替普通的ConnectionFactory。
#spring.activemq.pool.enabled=false
# 连接过期超时。
#spring.activemq.pool.expiry-timeout=0ms
# 连接空闲超时
#spring.activemq.pool.idle-timeout=30s
# 连接池最大连接数
#spring.activemq.pool.max-connections=1
# 每个连接的有效会话的最大数目。
#spring.activemq.pool.maximum-active-session-per-connection=500
# 当有"JMSException"时尝试重新连接
#spring.activemq.pool.reconnect-on-exception=true
# 在空闲连接清除线程之间运行的时间。当为负数时,没有空闲连接驱逐线程运行。
#spring.activemq.pool.time-between-expiration-check=-1ms
# 是否只使用一个MessageProducer
#spring.activemq.pool.use-anonymous-producers=true
--------------------------------------------------------
YCLOANS-PUBLIC:
license.licenseContext = <?xml version="1.0" encoding="UTF-8"?><license build-time="Mon May 06 11:39:46 CST 2019" validate-code="FC6107A40B8E7CF356B4EC5CC39A9CA6"><element name="license_code">0000011874</element><element name="product_code">0000001122</element><element name="product_name_zh-cn">宇信科技基于微服务框架统一开发平台</element><element name="product_name_en-us">YUSP</element><element name="version_major">1</element><element name="version_sub">0</element><element name="version_publish">1</element><element name="complie_date">2018-03-20</element><element name="license_type">内部试用许可证</element><element name="customer_name"/><element name="contract_code"/><element name="license_start_time">2019-05-06</element><element name="license_end_time">2119-06-01</element></license>
license.licenseModel = TRIAL

management.health.rabbit.enabled = false
management.health.ycloansmq.enabled = true
management.endpoints.web.base-path = /api/system/actuator
management.endpoint.health.show-details = always
management.endpoints.web.exposure.include = *
management.security.enabled = false

swagger.enabled = true
swagger.title = YUSP APP ycloans-starter Application API
swagger.description = YUSP APP ycloans-starter API documentation
swagger.version = 2.1.1.RELEASE

spring.liquibase.enabled = false
spring.liquibase.change-log = classpath:config/liquibase/master.xml
spring.cloud.inetutils.preferred-networks = 172.20.*
spring.jackson.serialization.INDENT_OUTPUT = true
spring.messages.cache-duration = 1

pagehelper.helperDialect = mysql
pagehelper.reasonable = true

mapper.mappers[0] = cn.com.yusys.yusp.commons.mapper.CommonMapper
----------------------------------------------------------------------
MYSQL:

######################################
##   MYSQL数据库配置
######################################
spring.datasource.url = jdbc:mysql://10.162.1.102:3306/apolloconfigdb?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username = apollo
spring.datasource.password = apollo
spring.datasource.hikari.minimum-idle = 20
spring.datasource.hikari.maximum-pool-size = 500
spring.datasource.hikari.data-source-properties.cachePrepStmts = true
spring.datasource.hikari.data-source-properties.prepStmtCacheSize = 250
spring.datasource.hikari.data-source-properties.prepStmtCacheSqlLimit = 2048
spring.datasource.hikari.data-source-properties.useServerPrepStmts = true
# 特别注意此处,否则存储mysql将无效
mybatis.mapperLocations = classpath*:mapper/**/*.xml
mybatis.configuration.map-underscore-to-camel-case = true
~~~

![image-20201201092635441](Apollo安装.assets/image-20201201092635441.png)





#### **Eureka配置:**

![image-20201201092852867](Apollo安装.assets/image-20201201092852867.png)

Eureka注册主要在本地(服务:pay/  agent/ nc*)进行配置,如下:

~~~shell
[root@mysql01 ycloans-pay-service]# pwd
/home/hxusr/ap/app/ycloans-pay-service
[root@mysql01 ycloans-pay-service]# ls
bootstrap.yml  config-cache  nohup.out  out1130.log  out.log  robotcenter.sh  ycloans_app.jar  ycloans_app.jar.1  ycloans_app.jar4
[root@mysql01 ycloans-pay-service]# cat bootstrap.yml
spring: 
    application:
        name: ycloans-pay-service  #应用名 集群名
    liquibase:
        enabled: false
        change-log: "classpath:config/liquibase/master.xml"
        
server:
    port: 6002 #应用启动端口


app:
    id: ycloans-pay-service  # Apollo集群名称
apollo:
    meta: http://10.162.1.76:9001   
    #meta: http://10.162.1.102:9081/
    cluster: SIT #环境
    cacheDir: ../apollo/  #apollo配置文件存放目录
    bootstrap:
        enabled: true
        namespaces: application,EUREKA,YCLOANS-PUBLIC,ACTIVE_MQ
# 命名空间注意:namespace 和 namespaces。

# 日志相关
logging: 
    path: ../logs #日志文件路径
    file: ${spring.application.name}_${server.port}.log #日志文件名称
    level: 
        root: INFO
        springfox.documentation.spring.web.readers.operation: OFF  #springfox日志关闭输出

#actuator监控配置
management: 
    health:
        rabbit:
            enabled: false      
# 停启 脚本: robotcenter.sh
# 日志 : out.log 
-------------------------------------------------------------
[root@peer1-dev ~]# cd /home/ap/app/mock/order/
[root@peer1-dev order]# ls
bootstrap.yml  logs  out.log  robotcenter.sh  ycloans_app.jar
[root@peer1-dev order]# cat bootstrap.yml 
spring:
  application:
    name: ycloans-common-reliable-message-mock-order  #应用名称
  liquibase:
    enabled: false
    change-log: "classpath:config/liquibase/master.xml"
server:
  port: 18814 #应用启动端口

test:
  apollo:
    env: SIT  
  log:
    level: INFO

app:
  id: ycloans-common-reliable-message
apollo:
  #meta: http://10.200.10.13:9001  # 湖北消金的配置
  #meta: http://10.162.1.102:9081  # 北银消金的配置
  meta: http://10.162.1.76:9001  
  cluster: ${test.apollo.env}   #集群名称
  cacheDir: ../apollo/  #apollo配置文件存放目录
  bootstrap:
    enabled: true
    namespaces: application,YCLOANS-PUBLIC,EUREKA,UNDERTOW,LOAD_BALANCE,LEVEL_CACHE,MYSQL,ACTIVE_MQ

# 日志相关
logging:
  path: ./logs #日志文件路径
  file: ${spring.application.name}_${server.port}.log #日志文件名称
  level:
    root: ${test.log.level}
    springfox.documentation.spring.web.readers.operation: OFF  #springfox日志关闭输出
#actuator监控配置
management:
  health:
    rabbit:
      enabled: false

~~~







### 2. 避坑指南

统一开发平台的配置会有影响,导致启动报错,原因未知,如果不用请删除

![img](Apollo安装.assets/wps5AD1.tmp.jpg) 

***



# Eureka安装

### 安装包位置:

G:\宇信\北银核算\项目文档\北银核算\包

eureka.zip

两台服务器互相注册:

### 配置hosts文件:

~~~shell
## 两台都要配:
[root@hexin2 eureka]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.162.1.100  peer2-dev 
10.162.1.76   peer1-dev

~~~



### 配置76:

~~~shell
## 上传解压:
[root@peer1-dev ~]# cd eureka
eureka/     eureka.zip  
[root@peer1-dev ~]# cd eureka
[root@peer1-dev eureka]# ls
application.yml                    ncloan-registry-server-eureka.log  startup-peer4-dev.sh
ncloan-registry-server-eureka.jar  startup-peer1-dev.sh
~~~

##### 配置application.yml:

~~~shell
[root@peer1-dev eureka]# cat application.yml
eureka: 
    client: 
        #是否要注册到其他Eureka Server实例
        register-with-eureka: true
        #是否要从其他Eureka Server实例获取数据
        fetch-registry: true
        service-url: 
            defaultZone: http://peer1-dev:8761/eureka/,http://peer2-dev:8762/eureka/
    instance:
        prefer-ip-address:  true  #将自己的ip地址注册到Eureka服务中
        #服务过期时间配置,默认90s
        lease-expiration-duration-in-seconds: 30
        #租期更新时间间隔
        lease-renewal-interval-in-seconds: 10
    server:
        #启用主动失效,并且每次主动失效检测间隔为3s
        eviction-interval-timer-in-ms: 3000
        # 关闭自我保护机制,保证不可用服务及时踢出
        enable-self-preservation: false
    
spring:
  application:
    name: servers-eureka
logging:
  level:
    com.netflix.eureka: OFF
    com.netflix.discovery: OFF
---
spring:
    #指定profile=peer1_dev
    profiles: peer1-dev
server:
    port: 8761
eureka:
    instance:
        #指定当profile=peer1_dev时,主机名是peer1_dev
        hostname: peer1-dev
---
spring:
    #指定profile=peer2
    profiles: peer2-dev
server:
    port: 8762
eureka:
    instance:
        #指定当profile=peer2_dev时,主机名是peer2_dev
        hostname: peer2-dev

~~~

##### 启动脚本:startup-peer1-dev.sh

~~~shell
[root@peer1-dev eureka]# vim startup-peer1-dev.sh 
注意必须:jdk1.8
#!/bin/bash 
nohup /usr/local/java1.8/bin/java -jar -Dfile.encoding=UTF-8 -Dapollo.bootstrap.enabled=false ncloan-registry-server-eureka.jar --spring.profiles.active=peer1-dev --spring.config.location=application.yml  > ncloan-registry-server-eureka.log 2>& 1 &
~~~



### 配置100:

~~~shell
上传解压:
[root@hexin2 ~]# cd eureka
eureka/     eureka.zip  
[root@hexin2 ~]# cd eureka
[root@hexin2 eureka]# ll
application.yml                    ncloan-registry-server-eureka.log  startup-peer4-dev.sh
ncloan-registry-server-eureka.jar  startup-peer2-dev.sh
~~~

##### 配置application.yml:

~~~shell
[root@hexin2 eureka]# cat application.yml
eureka: 
    client: 
        #是否要注册到其他Eureka Server实例
        register-with-eureka: true
        #是否要从其他Eureka Server实例获取数据
        fetch-registry: true
        service-url: 
            defaultZone: http://peer2-dev:8762/eureka/,http://peer1-dev:8761/eureka/
    instance:
        prefer-ip-address:  true  #将自己的ip地址注册到Eureka服务中
        #服务过期时间配置,默认90s
        lease-expiration-duration-in-seconds: 30
        #租期更新时间间隔
        lease-renewal-interval-in-seconds: 10
    server:
        #启用主动失效,并且每次主动失效检测间隔为3s
        eviction-interval-timer-in-ms: 3000
        # 关闭自我保护机制,保证不可用服务及时踢出
        enable-self-preservation: false
    
spring:
  application:
    name: servers-eureka
logging:
  level:
    com.netflix.eureka: OFF
    com.netflix.discovery: OFF
---
spring:
    #指定profile=peer1_dev
    profiles: peer1-dev
server:
    port: 8761
eureka:
    instance:
        #指定当profile=peer1_dev时,主机名是peer1_dev
        hostname: peer1-dev
---
spring:
    #指定profile=peer2
    profiles: peer2-dev
server:
    port: 8762
eureka:
    instance:
        #指定当profile=peer2_dev时,主机名是peer2_dev
        hostname: peer2-dev

~~~

##### 配置启动脚本:startup-peer2-dev.sh

~~~shell
[root@needyou eureka]# cat startup-peer2-dev.sh 
注意必须:jdk1.8
#!/bin/bash 
nohup java -jar -Dfile.encoding=UTF-8 -Dapollo.bootstrap.enabled=false ncloan-registry-server-eureka.jar --spring.profiles.active=peer2-dev --spring.config.location=application.yml  > ncloan-registry-server-eureka.log 2>& 1 &

~~~

***



# 时间同步:

ntpdate time1.aliyun.com   需要外网环境!

ntpdate  10.162.2.100      搭建内网时间服务器

10.162.2.100是唯一能连外网的服务器。作为内网的时间服务器。



主节点(时间服务器)10.162.2.100

~~~shell
# 查看是否安装 ntp 服务
[root@waiwang ~]# rpm -qa  ntp  
ntp-4.2.2p1-15.el5
# 如果有、查看服务配置文件
[root@waiwang ~]# rpm -qc  ntp
/etc/ntp.conf
/etc/ntp/keys
/etc/ntp/step-tickers
/etc/rc.d/init.d/ntpd
/etc/sysconfig/ntpd
# 没有则安装:
[root@waiwang ~]# yum -y install ntp

# 配置
[root@waiwang ~]# more /etc/ntp.conf 
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1 
restrict -6 ::1

# Hosts on local network are less restricted.
restrict 10.162.2.100 mask 255.255.0.0 nomodify notrap

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.rhel.pool.ntp.org
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org

#broadcast 192.168.1.255 key 42		# broadcast server
#broadcastclient			# broadcast client
#broadcast 224.0.1.1 key 42		# multicast server
#multicastclient 224.0.1.1		# multicast client
#manycastserver 239.255.254.254		# manycast server
#manycastclient 239.255.254.254 key 42	# manycast client

# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available. 
server	127.127.1.0	# local clock
fudge	127.127.1.0 stratum 10	

# Drift file.  Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography. 
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
#trustedkey 4 8 42

# Specify the key identifier to use with the ntpdc utility.
#requestkey 8

# Specify the key identifier to use with the ntpq utility.
#controlkey 8

~~~

客户端:

~~~shell
[root@hx245 ~]# yum -y install ntpdate
[root@hx245 ~]# ntpdate 10.162.2.100
 2 Dec 17:52:30 ntpdate[38066]: step time server 10.162.2.100 offset -26113.326900 sec
[root@hx245 ~]# date 
Wed Dec  2 17:52:33 CST 2020

~~~

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM