当前位置: 首页 > news >正文

做网站开发的经营范围长安网站建设价格

做网站开发的经营范围,长安网站建设价格,seo二级目录,十大社区团购平台有哪些作者 | 小碗汤来源 | 我的小碗汤今天分享一篇搭建一个高可用镜像仓库的教程。详细中夹杂着简单~。Harbor 部署架构图harbor 使用 helm 部署在 k8s 集群中#xff0c;通过 ingress-nginx 代理。pgsql 采用 Pgpool-II 代理#xff0c;做主从切换、通过同步流式复制进行数据复制… 作者 | 小碗汤来源 | 我的小碗汤今天分享一篇搭建一个高可用镜像仓库的教程。详细中夹杂着简单~。Harbor 部署架构图harbor 使用 helm 部署在 k8s 集群中通过 ingress-nginx 代理。pgsql 采用 Pgpool-II 代理做主从切换、通过同步流式复制进行数据复制客户端请求通过 Pgpool-II 路由。pgpool 无状态部署在 k8s 集群中。pgsql 主从实例部署在集群外虚拟机上。redis 哨兵模式部署在集群外虚拟机上。这里假设示例主机信息如下VM1172.0.0.1VM2172.0.0.2VM3172.0.0.3版本信息harbor-helm 1.5.0harbor 2.1.0redis 4.0.12Pgsql 9.6.16Pgpool 4.2.6harbor-helm 1.5.0 chart 包自带的 harbor 版本为 2.1.0RedisRedis 为哨兵模式架构图如下Redis 实例拓扑分布至于 Redis 集群在虚拟机上的部署我使用的是Cymbal 项目[1]Cymbal 秉承开箱即用的原则整个部署过程十分简单最小化版本只需要一个 runnable jar 及 mysql 服务的支持即可。Cymbal 是当当网架构部孵化并开源的 Redis PaaS 平台基于 Spring Boot2 开发。目标是帮助技术团队以简单低成本的方式管理大规模 Redis 集群。目前当当网内部使用 Cymbal 管理的 Redis 实例数量达到 1000。Cymbal 采用 DevOps 的设计思想以多租户的方式最大程度上赋予开发人员运维权限从而加快团队运转。同时Cymbal 上面集成了丰富的运维功能从监控、报警到在线扩缩容等力求最大程度上消除运维门槛。假设用 Cymbal 部署之后 redis 哨兵信息如下172.0.0.1:9381,172.0.0.2:9381,172.0.0.3:9381哨兵 Master 为: mymaster-EC4Fy7DJ密码为: harborpwd下面会用到这些信息。Pgsql基于 PGpool 中间件实现 postgresql 一主一从集群部署架构图实例如下PGPool、Pgsql 实例拓扑分布Pgpool 在 k8s 集群中多实例部署Pgsql 主从实例在虚拟机中用 docker 容器启动。docker 部署 pgsql在虚拟机上直接部署 pgsql 集群在时间成本上还是不太容易的。我们这里使用 docker 去管理会轻松一点。创建 volume由于复制管理器映像的 PostgreSQL 是非 root 用户因此您还需要为主机中的挂载目录设置适当的权限# 主实例 # docker volume create pg-0 # chgrp -R root /var/lib/docker/volumes/pg-0 # chmod -R grwX /var/lib/docker/volumes/pg-0 # 从实例 # docker volume create pg-1 # chgrp -R root /var/lib/docker/volumes/pg-1 # chmod -R grwX /var/lib/docker/volumes/pg-1我们这里将主从部署在不同的主机上所以两组命令应该在两台主机上执行。从而保证不同时挂掉。启动 pgsql 实例的脚本#!/bin/bashset -o errexitnode$1 if [[ -z ${node} ]]; thenecho Error: need node argument, example: pg-0exit -1 fiexistUp$(docker ps -f name${node} -q)if [[ -n ${existUp} ]]; then# nothingecho node: ${node} is Upexit 0 fiexistNotUp$(docker ps -a -f name${node} -q)if [[ -n ${existNotUp} ]]; then# startecho node: ${node} is not Up, will start itdocker start ${existNotUp}exit 0 fi# create docker run --detach --name ${node} \ --network host \ --env REPMGR_PARTNER_NODESpg-0,pg-1 \ --env REPMGR_NODE_NAME${node} \ --env REPMGR_NODE_NETWORK_NAME${node} \ --env REPMGR_PRIMARY_HOST${node} \ --env REPMGR_USERNAMErepmgrharbor \ --env REPMGR_PASSWORDrepmgrpwd \ --env POSTGRESQL_POSTGRES_PASSWORDpgpwd \ --env POSTGRESQL_USERNAMEpgharbor \ --env POSTGRESQL_PASSWORDpgpwd \ --env POSTGRESQL_DATABASEpgharbor \ --env BITNAMI_DEBUGtrue \ --env TZAsia/Shanghai \ -v ${node}:/bitnami/postgresql \ -v /neworiental/pgsql/custom-conf/:/bitnami/repmgr/conf/ \ bitnami/postgresql-repmgr:9.6.16启动时用# start-pg.sh {容器名}容器名为 pg-0主或者 pg-1从。pgsql 挂掉自启动docker 容器挂掉后用 crontab 保证容器可以重新启动30s 为间隔去执行 start-pg.sh 脚本。执行 crontab -e 在最后新增以下内容然后:wq 保存退出即可# Need these to run on 30-sec boundaries, keep commands in sync. * * * * *              /pgsql/start-pg.sh pg-1 * * * * * ( sleep 30 ; /pgsql/start-pg.sh pg-1 )创建 PgpoolapiVersion: apps/v1 kind: Deployment metadata:labels:app.kubernetes.io/component: pgpoolapp.kubernetes.io/instance: pgsqlapp.kubernetes.io/managed-by: Helmapp.kubernetes.io/name: postgresql-ha-dochelm.sh/chart: postgresql-ha-8.0.2name: pgpool-for-docker-dp-pgsqlnamespace: harbor spec:progressDeadlineSeconds: 600replicas: 2revisionHistoryLimit: 10selector:matchLabels:app.kubernetes.io/component: pgpoolapp.kubernetes.io/instance: pgsqlapp.kubernetes.io/name: postgresql-ha-docstrategy:rollingUpdate:maxSurge: 25%maxUnavailable: 25%type: RollingUpdatetemplate:metadata:creationTimestamp: nulllabels:app.kubernetes.io/component: pgpoolapp.kubernetes.io/instance: pgsqlapp.kubernetes.io/managed-by: Helmapp.kubernetes.io/name: postgresql-ha-dochelm.sh/chart: postgresql-ha-8.0.2spec:affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- topologyKey: kubernetes.io/hostnamelabelSelector:matchLabels:app.kubernetes.io/component: pgpoolapp.kubernetes.io/instance: pgsqlcontainers:- env:- name: BITNAMI_DEBUGvalue: false- name: PGPOOL_BACKEND_NODESvalue: 0:172.0.0.1:5432,1:172.0.0.2:5432,- name: PGPOOL_SR_CHECK_USERvalue: repmgrharbor- name: PGPOOL_SR_CHECK_PASSWORDvalue: repmgrpwd- name: PGPOOL_SR_CHECK_DATABASEvalue: postgres- name: PGPOOL_ENABLE_LDAPvalue: no- name: PGPOOL_POSTGRES_USERNAMEvalue: pgharbor- name: PGPOOL_POSTGRES_PASSWORDvalue: pgpwd- name: PGPOOL_ADMIN_USERNAMEvalue: pgpooladmin- name: PGPOOL_ADMIN_PASSWORDvalue: pgpoolpwd- name: PGPOOL_ENABLE_LOAD_BALANCINGvalue: yes- name: PGPOOL_DISABLE_LOAD_BALANCE_ON_WRITEvalue: transaction- name: PGPOOL_ENABLE_LOG_CONNECTIONSvalue: no- name: PGPOOL_ENABLE_LOG_HOSTNAMEvalue: yes- name: PGPOOL_ENABLE_LOG_PER_NODE_STATEMENTvalue: no- name: PGPOOL_CHILD_LIFE_TIME- name: PGPOOL_ENABLE_TLSvalue: noimage: docker.io/bitnami/pgpool:4.2.6-debian-10-r7imagePullPolicy: IfNotPresentlivenessProbe:exec:command:- /opt/bitnami/scripts/pgpool/healthcheck.shfailureThreshold: 5initialDelaySeconds: 30periodSeconds: 10successThreshold: 1timeoutSeconds: 5name: pgpoolports:- containerPort: 5432name: postgresqlprotocol: TCPreadinessProbe:exec:command:- bash- -ec- PGPASSWORD${PGPOOL_POSTGRES_PASSWORD} psql -U pgharbor -d pgharbor-h /opt/bitnami/pgpool/tmp -tA -c SELECT 1 /dev/nullfailureThreshold: 5initialDelaySeconds: 5periodSeconds: 5successThreshold: 1timeoutSeconds: 5resources: {}securityContext:runAsUser: 1001terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilednsPolicy: ClusterFirstrestartPolicy: AlwaysschedulerName: default-schedulersecurityContext:fsGroup: 1001terminationGracePeriodSeconds: 30 --- apiVersion: v1 kind: Service metadata:labels:app.kubernetes.io/component: pgpoolapp.kubernetes.io/instance: pgsqlapp.kubernetes.io/managed-by: Helmapp.kubernetes.io/name: postgresql-ha-dochelm.sh/chart: postgresql-ha-8.0.2name: pgpool-for-docker-dp-pgsqlnamespace: harbor spec:ports:- name: postgresqlport: 5432protocol: TCPtargetPort: postgresqlselector:app.kubernetes.io/component: pgpoolapp.kubernetes.io/instance: pgsqlapp.kubernetes.io/name: postgresql-ha-docsessionAffinity: Nonetype: ClusterIP直接kubectl apply以上 yaml 即可。连接 pgsql 手动创库harbor 对接外部 pgsql 时需要提前创建库所以手动创建以下四个 database一般 DBA 来做这件事, 可以直接连接 pgsql 主实例也可以通过 Pgpool 连接# PGPASSWORDpgpwd psql -h localhost -p 5432 -U pgharbor -d pgharbor pgharbor CREATE DATABASE registry ENCODING UTF8; pgharbor CREATE DATABASE notary_signer ENCODING UTF8; pgharbor CREATE DATABASE notary_server ENCODING UTF8; pgharbor CREATE DATABASE clair ENCODING UTF8;harbor 物料harbor-helm 仓库[2]部署 harbor下载 harbor-helm 包# wget https://github.com/goharbor/harbor-helm/archive/refs/tags/v1.5.0.tar.gz # tar -zxf v1.5.0.tar.gz # cd harbor-helm-1.5.0# 创建ns kubectl create ns harbor创建域名证书 Secret这里需要用到你的域名证书。kubectl  create secret tls harbor-ingress -n harbor --cert./product.cn.pem --key./product.cn.key如果没有域名证书也可以使用自动生成证书下面会讲到。修改 values.yaml 中以下内容expose:type: ingresstls:enabled: truecertSource: secretsecret:# The name of secret which contains keys named:# tls.crt - the certificate# tls.key - the private keysecretName: harbor-ingressingress:hosts:core: harbor-pro.kubeinfo.cncontroller: defaultannotations:ingress.kubernetes.io/ssl-redirect: trueingress.kubernetes.io/proxy-body-size: 0nginx.ingress.kubernetes.io/ssl-redirect: truenginx.ingress.kubernetes.io/proxy-body-size: 0 # If Harbor is deployed behind the proxy, set it as the URL of proxy externalURL: https://harbor-pro.kubeinfo.cn # The initial password of Harbor admin. Change it from portal after launching Harbor harborAdminPassword: Harbor678901persistence:enabled: trueresourcePolicy: keeppersistentVolumeClaim:registry:storageClass: cephfsaccessMode: ReadWriteManysize: 200Gi notary:enabled: false database:# if external database is used, set type to external# and fill the connection informations in external sectiontype: externalexternal:host: pgpool-for-docker-dp-pgsql.harbor.svc.cluster.localport: 5432username: pgharborpassword: pgpwdmaxOpenConns: 1000redis:# if external Redis is used, set type to external# and fill the connection informations in external sectiontype: externalexternal:# support redis, redissentinel# addr for redis: host_redis:port_redis# addr for redissentinel: host_sentinel1:port_sentinel1,host_sentinel2:port_sentinel2,host_sentinel3:port_sentinel3addr: 172.0.0.1:9381,172.0.0.2:9381,172.0.0.3:9381# The name of the set of Redis instances to monitor, it must be set to support redissentinelsentinelMasterSet: mymaster-EC4Fy7DJpassword: harborpwdvalues.yaml 中的域名修改为自己的域名这里用到的是 harbor-pro.kubeinfo.cnexpose.tls.certSource 可以为 auto即 chart 包会自动生成证书我们这里用 secret域名对应的证书 secret 名这里为 harbor-ingress即上面创建的外部 redis 信息外部 pgsql 信息这里连接到集群内 pgpool 的域名storageClass 这里用 Rook 部署的 ceph 集群的文件存储修改为 cephfsharbor 密码自定义安装 harborhelm install pro -n harbor -f values.yaml .正常情况一段时间后harbor 会启动成功我们访问harbor 域名[3]即可看到 harbor 的界面。升级如果修改了 values.yaml 后执行升级helm upgrade pro -n harbor -f values.yaml .卸载helm uninstall pro -n harbor往期推荐性能提升一个数量级大杀器来了k8s集群居然可以图形化安装了用了HTTPS没想到还是被监控了快速搭建实验环境使用 Terraform 部署 Proxmox 虚拟机点分享点收藏点点赞点在看
http://www.zqtcl.cn/news/67902/

相关文章:

  • 定制鞋子哪个网站好平面设计兼职接单群
  • 深圳做外贸网站网站建设公司怎样
  • 网站建设中 html 下载手递手个人求职信息网
  • 购物网站服务中心vivo官网网站服务中心
  • 如何做网站网页旁边的留言框游戏开发用什么语言
  • 桂林北站到两江机场大巴时刻表视频网站费用
  • 网站数据库备份怎么做十大装修公司
  • 做公司网站都需要哪些东西泵阀网站建设
  • 网站怎样做关键词优化怎么自己建立公司网站
  • 网站手机版绑定域名wordpress码支付个人免签
  • 普达建站快车网站备案提交管局
  • 哪家公司建5g基站火车头采集wordpress发布
  • 网站开发是怎么样的企业网站建设属于什么费用
  • 做导航网站成本微信公众号排版app
  • 潍坊网站建设价格wordpress文章前台看不到
  • 微信公众号的模板网站重庆装修公司全包价格
  • 成都网站关键词排名h5制作哪个网站好
  • 化妆品行业网站建设方案白沟做网站
  • 网站开发涉及到缓存吗麋鹿 wordpress
  • 室内设计网站都有哪些公司万网虚拟主机两个网站
  • 厦门集美区网站建设阿里云网站备案需要多久
  • 免费模板网站下载南京制作网站优化
  • 网站建设优化及推广微信小程序怎么制作的
  • 公司入口网站app中山东莞网站推广
  • 广州做营销型网站怎么做pc端移动网站
  • iis怎么查看网站的域名德尔普网络做网站怎么样
  • 网站开发结语wordpress音乐插件mp3
  • 网站建设 风险说明书固原建设厅官方网站
  • 微信网站开场动画河西集团网站建设
  • 最好的网站建设公司有哪些黑马程序员线上课程