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

做网站开发的经营范围网站规划与设计一千字

做网站开发的经营范围,网站规划与设计一千字,足彩推荐网站开发,中文网页设计案例欣赏作者 | 小碗汤来源 | 我的小碗汤今天分享一篇搭建一个高可用镜像仓库的教程。详细中夹杂着简单~。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/220471/

相关文章:

  • 药品网站订单源码外贸网站建设服务器
  • 深圳网站制作07551免费开发网站
  • 如何直接用jsp做网站不写servletwordpress模板 单栏
  • 长沙网站建设哪个公司好设计公司网站 唐山
  • 原创小说手机网站制作需要多少钱郴州seo外包
  • 深圳市大鹏建设局网站网站关键词没排名怎么办
  • 水果商城网站制作多少钱c#如何做公司网站
  • 国内做进口的电商网站网站建设的经验做法
  • 蚂蚁搬家公司官方网站免费网站软件制作
  • 搭建网站要用到的工具外链代发免费
  • 肥城网站建设流程oem中国代加工网
  • 到底建手机网站还是电脑网站网站视频怎么做
  • 小区网站建设前端手机网站
  • 做一个网站价格WordPress好看的404
  • 查看注册过的网站在线网站软件免费下载
  • 门户网站建设公司价位域名出售网站
  • 亿级流量网站架构自己制作一个网站
  • 企业网站seo成功案例天津网站建设制作品牌公司
  • 衡水做网站电话郏县建设局网站
  • 美工做网站尺寸多少钱怎么做网站免费的
  • 会计信息系统网站建设流程图手机网站图片宽度
  • 已备案网站增加域名wordpress 百度熊掌号
  • 网站建设维护课件ppt百度搜索一下百度
  • 重庆企业网站开发方案wordpress菜单插件
  • 江苏网站seo设计什么学习网站建设
  • 青海网站建设系统电商出口营销要多少钱
  • 上海的网站设计公司百度上做优化
  • 连云港权威网站优化服务如何自己做解析网站
  • 学校网站建设调研报告wordpress update_post_meta
  • 法人变更在哪个网站做公示做企业平台的网站有哪些