运维发应用是如何避免定制化配置文件的 - 每一个应用集群唯一对应一套配置文件
运维发应用是如何处理定制化配置文件的 -- 每一个应用集群唯一对应一套配置文件
应用发布的时候,有些配置文件,需要进行定制化发布,根据部署环境修改配置项的值,比如jdbc.properties,redis.properties.那么运维是如何处理这些文件的?
--------------------------
我总结出的原则如下:
1 分系统
2 分应用
3 分机器
4 增量发布
1 分系统:
区分enterprise,goods,pms,oc
2 分应用
区分是app,api,ba
3 分机器
特定机器的ip,port,hosts配置
4 增量发布
定制化配置文件上线后,后续需要进行修改,需要进行增量修改,增量修改也要分系统,应用,机器
--------------------------------
根据上述原则实施,并累积的一些经验
项目构建时需要将需要定制化发布的配置文件排除在外,并合并到一个文件夹中
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <excludes> <exclude>jdbc.properties</exclude> <exclude>mongodb.properties</exclude> <exclude>redis.properties</exclude> <exclude>sendsms.properties</exclude> <exclude>myconfig.properties</exclude> <exclude>domain.properties</exclude> <exclude>cas.properties</exclude> <exclude>config.properties</exclude> <exclude>qianwang_pay.properties</exclude> <exclude>qqconnectconfig.properties</exclude> <exclude>lottery.properties</exclude> <exclude>merchantinterfaceurl.properties</exclude> <exclude>ip-limit.properties</exclude> <exclude>qiniu.properties</exclude> <exclude>qb-dubbo.properties</exclude> </excludes> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </configuration> <version>2.4</version> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.4</version> <executions> <execution> <id>copy-resources</id> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/conf</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>jdbc.properties</include> <include>mongodb.properties</include> <include>redis.properties</include> <include>sendsms.properties</include> <include>myconfig.properties</include> <include>domain.properties</include> <include>cas.properties</include> <include>config.properties</include> <include>qianwang_pay.properties</include> <include>qqconnectconfig.properties</include> <include>merchantinterfaceurl.properties</include> <include>qiniu.properties</include> <include>ip-limit.properties</include> <include>qb-dubbo.properties</include> </includes> <filtering>true</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin>
------------------------------
部署的时候,运维会为具体系统下的具体应用维护一个单独的定制化配置文件目录,如果要改app,ba或者api的配置项,则修改此目录下的配置文件,每一个具体应用发布的时候,会重新将此目录迁出到本地,避免了一台一台机器的改。
如果遇到了需要分机器的情况,则使用sed修改机器上的启动脚本,而不是修改配置文件,因为配置文件每次都会被重新迁出