做网站卖广告挣几百万,wordpress后台慢,krypt免费wordpress空间,知识库管理系统方案一 背景介绍先来看一下我们熟悉的第一代 spring cloud 的组件spring cloud 现在已经是一种标准了#xff0c;各公司可以基于它的编程模型编写自己的组件 #xff0c;比如Netflix、阿里巴巴都有自己的一套通过spring cloud 编程模型开发的分布式服务组件 。Spring Cloud 二代组…一 背景介绍先来看一下我们熟悉的第一代 spring cloud 的组件spring cloud 现在已经是一种标准了各公司可以基于它的编程模型编写自己的组件 比如Netflix、阿里巴巴都有自己的一套通过spring cloud 编程模型开发的分布式服务组件 。Spring Cloud 二代组件Spring Cloud Alibaba 主要包含 Sentinel、Nacos、RocketMQ、Dubbo、Seata 等组件。二代引入了 Spring Cloud Alibaba再加上我们常用的组件这其有中除 spring cloud gateway都需要外部单独部署服务来支持二 利用docker-compose 进行本地简化部署apolloversion: 2services: apollo-quick-start: image: nobodyiam/apollo-quick-start container_name: apollo-quick-start depends_on: - apollo-db ports: - 8080:8080 - 8070:8070 links: - apollo-db apollo-db: image: mysql:5.7 container_name: apollo-db environment: TZ: Asia/Shanghai MYSQL_ALLOW_EMPTY_PASSWORD: yes depends_on: - apollo-dbdata ports: - 13306:3306 volumes: - ./sql:/docker-entrypoint-initdb.d volumes_from: - apollo-dbdata apollo-dbdata: image: alpine:latest container_name: apollo-dbdata volumes: - /var/lib/mysql注意 ./sql下面的文件在这里(https://github.com/ctripcorp/apollo/tree/master/scripts/sql)是两个初始化的sql文件nacosversion: 2services: nacos: image: nacos/nacos-server:latest container_name: nacos-standalone-mysql env_file: - ./env/nacos-standlone-mysql.env volumes: - ./standalone-logs/:/home/nacos/logs - ./init.d/custom.properties:/home/nacos/init.d/custom.properties ports: - 8848:8848 - 9555:9555 depends_on: - mysql restart: on-failure mysql: container_name: mysql image: nacos/nacos-mysql:5.7 env_file: - ./env/mysql.env volumes: - ./mysql:/var/lib/mysql ports: - 3308:3306redisversion: 2services: #redis容器 redis: #定义主机名 container_name: redis #使用的镜像 image: redis:6.0.8 #容器的映射端口 ports: - 6379:6379 command: redis-server /etc/conf/redis.conf #定义挂载点 volumes: - ./data:/data - ./conf:/etc/conf #环境变量 privileged: true environment: - TZAsia/Shanghai - LANGen_US.UTF-8注意 conf下的redis.conf配置文件可以找个默认的模版文件然后进行相应修改rocket-mqversion: 2services: #Service for nameserver namesrv: image: apacherocketmq/rocketmq-nameserver:4.5.0-alpine-operator-0.3.0 container_name: rmqnamesrv ports: - 9876:9876 volumes: - ./data/namesrv/logs:/home/rocketmq/logs command: sh mqnamesrv environment: TZ: Asia/Shanghai JAVA_OPT_EXT: -server -Xms512m -Xmx512m -Xmn256m #Service for broker broker: image: apacherocketmq/rocketmq-broker:4.5.0-alpine-operator-0.3.0 container_name: rmqbroker-a depends_on: - namesrv ports: - 10909:10909 - 10911:10911 - 10912:10912 environment: NAMESRV_ADDR: namesrv:9876 JAVA_OPT_EXT: -server -Xms512m -Xmx512m -Xmn256m volumes: - ./data/broker/logs:/home/rocketmq/logs - ./data/broker/store:/home/rocketmq/store - ./data/broker/conf/broker.conf:/opt/rocketmq-4.7.1/conf/broker.conf command: sh mqbroker -c /opt/rocketmq-4.7.1/conf/broker.conf #Service for another broker -- broker1 broker1: image: apacherocketmq/rocketmq-broker:4.5.0-alpine-operator-0.3.0 container_name: rmqbroker-b depends_on: - namesrv ports: - 10929:10909 - 10931:10911 - 10932:10912 environment: NAMESRV_ADDR: namesrv:9876 JAVA_OPT_EXT: -server -Xms512m -Xmx512m -Xmn256m volumes: - ./data1/broker/logs:/home/rocketmq/logs - ./data1/broker/store:/home/rocketmq/store - ./data1/broker/conf/broker.conf:/opt/rocketmq-4.7.1/conf/broker.conf command: sh mqbroker -c /opt/rocketmq-4.7.1/conf/broker.conf rmqconsole: image: styletang/rocketmq-console-ng container_name: rmqconsole ports: - 8180:8080 environment: TZ: Asia/Shanghai JAVA_OPTS: -Drocketmq.namesrv.addrnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannelfalse depends_on: - namesrv此外还有两个配置文件./data/broker/conf/broker.conf./data1/broker/conf/broker.conf## ./data/broker/conf/broker.confbrokerClusterName DefaultClusterbrokerName broker-abrokerId 0deleteWhen 04fileReservedTime 48brokerRole ASYNC_MASTERflushDiskType ASYNC_FLUSH### ./data1/broker/conf/broker.confbrokerClusterName DefaultClusterbrokerName broker-bbrokerId 0deleteWhen 04fileReservedTime 48brokerRole ASYNC_MASTERflushDiskType ASYNC_FLUSHseata-serverversion: 3.1services: seata-server: image: seataio/seata-server:latest hostname: seata-server ports: - 8091:8091 environment: - SEATA_PORT8091 expose: - 8091sentinel没有现成的docker镜像需要自己编写一个FROM openjdk:8#复制上下文目录下的jar包到容器里 使用COPY命令亦可ADD sentinel-dashboard-1.8.0.jar sentinel-dashboard-1.8.0.jarEXPOSE 8080#指定容器启动程序及参数 ENTRYPOINT [java,-jar,sentinel-dashboard-1.8.0.jar]利用自己编译的镜像再编写docker-compose配置文件version: 3services: sentinel-dashboard: image: sentinel-dashboard:1.8.0 container_name: sentinel-dashboard restart: always environment: JAVA_OPTS: -Dserver.port8080 -Dcsp.sentinel.dashboard.serverlocalhost:8080 -Dproject.namesentinel-dashboard -Djava.security.egdfile:/dev/./urandom -Dcsp.sentinel.api.port8719 ports: #避免出现端口映射错误建议采用字符串格式 8080端口为Dockerfile中EXPOSE端口 - 58080:8080 - 8719:8719 volumes: - ./root/logs:/root/logsxxl-jobversion: 3services: xxl-job-admin: image: xuxueli/xxl-job-admin:2.2.0 restart: always container_name: xxl-job-admin depends_on: - mysql environment: PARAMS: --spring.datasource.urljdbc:mysql://mysql:3306/xxl_job?UnicodetruecharacterEncodingUTF-8 --spring.datasource.usernameroot --spring.datasource.passwordroot ports: - 8067:8080 volumes: - ./data/applogs:/data/applogs注意 这时引用的数据库是你现有的mysql找一个现有的因为为了它再新建一个容器有点儿浪费prometheus(altermanagerprometheusgrafana)version: 3services: prometheus: image: prom/prometheus:latest container_name: prometheus volumes: - /opt/docker_compose/monitor/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml - /opt/docker_compose/monitor/prometheus/alertmanager_rules.yml:/etc/prometheus/alertmanager_rules.yml ports: - 9090:9090 command: - --config.file/etc/prometheus/prometheus.yml grafana: image: grafana/grafana container_name: grafana restart: always hostname: grafana volumes: - /opt/docker_compose/monitor/grafana/grafana.ini:/etc/grafana/grafana.ini ports: - 3000:3000 alertmanager: image: prom/alertmanager:latest container_name: alertmanager hostname: alertmanager restart: always volumes: - /opt/docker_compose/monitor/altermanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml ports: - 9093:9093 prometheus-webhook-alert: image: timonwong/prometheus-webhook-dingtalk:v1.3.0 container_name: prometheus-webhook-alertmanagers hostname: webhook-alertmanagers restart: always volumes: - /opt/docker_compose/monitor/prometheus-webhook-dingtalk/config.yml:/etc/prometheus-webhook-dingtalk/config.yml - /etc/localtime:/etc/localtime ports: - 8060:8060 entrypoint: /bin/prometheus-webhook-dingtalk --config.file/etc/prometheus-webhook-dingtalk/config.yml --web.enable-ui这里我的alter没有用grafana的而是结合altermanager和 prometheus-webhook-dingtalk实现的钉钉告警。关于prometheus、altermanager、grafana都是常规配置大家可以找模板然后根据自己的需求修改唯一需要说明的就是prometheus-webhook-dingtalk虽然github上说明可以配置通知模版但最新版本的我怎么修改也不成是个问题。 需要观察以后版本会不会好或者直接上手改它的go代码。skywalkingversion: 3.3services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.5.0 container_name: elasticsearch restart: always ports: - 9200:9200 - 9300:9300 environment: - discovery.typesingle-node - bootstrap.memory_locktrue network_mode: bridge volumes: - /data/docker_compose/skywalking/es/config/jvm.options:/usr/share/elasticsearch/config/jvm.options:rw - /data/docker_compose/skywalking/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - /data/docker/elk/elk_elastic/data:/usr/share/elasticsearch/data:rw ulimits: memlock: soft: -1 hard: -1 oap: image: apache/skywalking-oap-server:8.1.0-es7 container_name: oap depends_on: - elasticsearch links: - elasticsearch network_mode: bridge restart: always ports: - 11800:11800 - 12800:12800 environment: SW_ES_USER: elastic SW_ES_PASSWORD: oasises SW_STORAGE: elasticsearch7 SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200 SW_TRACE_SAMPLE_RATE: 8000 ui: image: apache/skywalking-ui:8.1.0 container_name: ui network_mode: bridge depends_on: - oap links: - oap restart: always ports: - 8083:8080 environment: SW_OAP_ADDRESS: oap:12800注意 es的详细配置文件需要你自己写哈。kibana(ELK)version: 2services: elk-logstash: image: docker.elastic.co/logstash/logstash:7.5.0 container_name : elk_logstash hostname: elk_logstash stdin_open: true tty: true ports: - 5000:5000/udp - 5001:5001 command: logstash --path.settings /etc/logstash -f /etc/logstash/conf.d/logstash.conf external_links: - elasticsearch network_mode: bridge volumes: - /data1/docker/elk/elk_logstash/conf.d:/etc/logstash/conf.d - /data1/docker/elk/elk_logstash/heapdump.hprof:/usr/share/logstash/heapdump.hprof -rw - /data1/docker/elk/elk_logstash/gc.log:/usr/share/logstash/gc.log -rw elk-kibana: image: docker.elastic.co/kibana/kibana:7.5.0 container_name : elk_kibana hostname: elk_kibana stdin_open: true tty: true ports: - 5601:5601 external_links: - elasticsearch network_mode: bridge volumes: - /data1/docker/elk/elk_kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml environment: - ELASTICSEARCH_URLhttp://elasticsearch:9200由于ES一般我们会建集群这里忽略ES容器logstash和kibana的相关配置也可从官网找到模版进行修改关注公众号 小盒子的技术分享 获取更多精彩内容