首页 文章 精选 留言 我的

精选列表

搜索[环境],共10000篇文章
优秀的个人博客,低调大师

k8s生产环境应用部署(无坑版本)

2 --> 一.Docker harbor搭建 二.构建提交镜像 三.k8s部署 一.Docker harbor搭建 1.1 .docker harbor部署(https://www.cnblogs.com/sanduzxcvbnm/p/13724770.html) 1.2 创建docker harbor认证secret kubectl create secret docker-registry registry-pull-secret --docker-server=10.206.16.4 --docker-username=admin --docker-password=Rolinabc123 --docker-email=xxxx@qq.com 1.3 进入harbor界面,创建项目fronted 二.构建提交镜像 2.1 进入网站目录编写dockerfile From nginx WORKDIR /var/www/html add h5game.xxx.com.tar.gz /var/www/html 2.2 修改客户端docker配置文件支持http vim /etc/docker/daemon.json "insecure-registries" : ["10.206.16.4"] 2.3 构建镜像推送到harbor docker login 10.206.16.4 docker build 10.206.16.4/fronted/h5game.xxx.com:v1 . docker push 10.206.16.4/fronted/h5game.xxx.com:v1 三.k8s部署 3.1 namespace创建 namespace.yaml apiVersion: v1 kind: Namespace metadata: name: fronted 3.2 configmap配置创建 configmap.yaml kind: ConfigMap # 对象类型 apiVersion: v1 # api 版本 metadata: # 元数据 name: h5sdk # 对象名称 namespace: fronted data: # key-value 数据集合 nginx.conf: | # 将 nginx config 配置写入 ConfigMap 中,经典的 php-fpm 代理设置,这里就不再多说了 events { } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; gzip on; tcp_nopush on; tcp_nodelay on; server_tokens off; keepalive_timeout 0; client_body_timeout 10; client_header_timeout 10; client_header_buffer_size 1k; large_client_header_buffers 4 4k; output_buffers 1 32k; client_max_body_size 64m; client_body_buffer_size 256k; server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html/h5game.sentsss.com; #index index.php; server_name _; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location / { index index.html index.htm index.php; if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } } access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log error; #location ~ \.php$ { # include fastcgi_params; # fastcgi_param REQUEST_METHOD $request_method; # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # fastcgi_pass 127.0.0.1:9000; } } 3.3 部署文件 deployment.yaml kind: Deployment apiVersion: apps/v1 metadata: name: h5sdk namespace: fronted spec: selector: kind: Deployment apiVersion: apps/v1 metadata: name: h5sdk namespace: fronted spec: selector: matchLabels: app: h5sdk replicas: 2 template: metadata: labels: app: h5sdk spec: #nodeName: k8s-node-01 imagePullSecrets: - name: registry-pull-secret containers: - name: nginx image: 10.206.16.4/fronted/www.h5sdk.xxx.com:v1 ports: - containerPort: 80 volumeMounts: #- mountPath: /var/www/html #name: nginx-www - mountPath: /etc/nginx/nginx.conf subPath: nginx.conf name: nginx-config - mountPath: /var/log/nginx name: nginx-log - mountPath: /etc/localtime name: timezone #探针查看服务是否可用是否加入service livenessProbe: httpGet: path: /user.html port: 80 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 failureThreshold: 3 timeoutSeconds: 1 readinessProbe: httpGet: path: /user.html port: 80 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 failureThreshold: 3 timeoutSeconds: 1 lifecycle: preStop: exec: command: ["/bin/bash","-c","sleep 20"] resources: limits: cpu: 40m memory: 40Mi requests: cpu: 20m memory: 20Mi affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - {key: app, operator: In, values: ["h5sdk"]} topologyKey: fronted volumes: - name: nginx-log hostPath: path: /opt/log/nginx/h5sdk - name: nginx-config configMap: name: h5sdk - name: timezone hostPath: path: /usr/share/zoneinfo/Asia/Shanghai #- name: nginx-www # emptyDir: {} 3.4 svc的创建 svc.yaml apiVersion: v1 kind: Service metadata: name: h5sdk namespace: fronted spec: selector: #project: h5sdk app: h5sdk ports: - port: 80 targetPort: 80 3.5 ingress创建 ingress.yaml kind: Ingress # 对象类型 apiVersion: networking.k8s.io/v1beta1 metadata: name: h5sdk namespace: fronted spec: rules: - host: h6game.xxx.com http: paths: - path: / backend: serviceName: h5sdk # 需要与servicename一致 servicePort: 80 # 与 Service 的 port 一致 3.6 hpa创建 hpa.yaml(记得提前安装metric) kind: HorizontalPodAutoscaler # 对象类型,简称 hpa,水平自动伸缩 apiVersion: autoscaling/v2beta2 # autoscaling/v2beta2 与 autoscaling/v1 的 API 有很大的不同,注意识别两者的差异 metadata: name: h5sdk namespace: fronted spec: scaleTargetRef: # 伸缩的目标对象 apiVersion: apps/v1 # 对象版本 kind: Deployment # 目标对象的类型 name: h5sdk # 目标对象的名称 minReplicas: 2 # 最小副本数 maxReplicas: 4 # 最大副本数 metrics: # 指标 - type: Resource # 类型:资源 resource: name: memory # 内存 target: type: Utilization averageUtilization: 70 # 1% 这个值是为了实验,具体值请参考业务方实际情况而定 - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70 3.7 腾讯云申请一个负载均衡,然后将所有node节点加入到负载均衡 3.8 域名解析到负载均衡的ip上

优秀的个人博客,低调大师

生产环境使用HBase,你必须知道的最佳实践

云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 前面,我们已经打下了很多关于HBase的理论基础,今天,我们主要聊聊在实际开发使用HBase中,需要关注的一些最佳实践经验。 Schema设计七大原则 1)每个region的大小应该控制在10G到50G之间; 2)一个表最好保持在 50到100个 region的规模; 3)每个cell最大不应该超过10MB,如果超过,应该有些考虑业务拆分,如果实在无法拆分,那就只能使用mob; 4)跟传统的关系型数据库不同,一个HBase的表中列族最多不超过3个,列族中的列可以动态添加的,不要设计过多列族; 5)列族名必须尽量短,因为我们知道在存储的时候,每个keyvalue都会包含列族名; 6)如果一个表存在一个以上的列族,那么必须要注意,不同列族之间行数相差不要太大。例如列族A有10万行,而列族B有1亿行,那么rowkey就有1亿行,而region是按照行键进行切分的,因此列族A可能会被打散为很多很多小region,这会导致在扫描列族A时会引发较多IO,效率低下。 7)列族可以设置TTL时间,HBase在超过设定时间后,会自动删除数据。 设置方法有两种: 建表时设置,TTL单位为秒,此例中列簇'f1'的数据保留1天(86400秒) hbase(main):002:0>create 'table', {NAME => 'f1', TTL => 86400} 通过修改表设置 hbase(main):002:0>alter 'table', {NAME => 'f1', TTL => 86400} 这里需要注意,一旦超过设定时间后,该数据就无法读取了,但是,真正的过期数据删除,是发生在major compaction时。 . RowKey设计三大策略 HBase作为一个分布式存储数据库,虽然扩容非常容易,但是,对于“热点”问题,还是非常头疼的。 所谓“热点”问题(HotSpotting),就是请求(读或者写)短时间内落在了集中的个别region上,导致了该region所在机器的负载急剧上升,超过了单点实例的承受能力,从而引起性能下降或者不可用。 要解决这个问题,就需要设计RowKey时,使得数据尽量往多个region上去写。 举个例子: 假如region按照26个字母分成26个,那么同时写入m开头的rowkey的记录都会同时写入同一个region 比如m001,m002,m003,m004,m005。 因此,RowKey的设计非常关键。常见的设计策略有这么几种。 1)salting salting策略就是将生成随机数放在行键的开头作为前缀,使得每个行键有随机的字典序。 对上面的案例进行优化,我们采用了salting策略,插入前给每个rowkey生成一个随机的字母,变成了 am001,zm002,nm003,qm004,lm005 这样就能同时往5个region里面写入了,成功打散。 副作用:由于前缀生成是随机的,因此如果想要按照字典序查询这些行,则需要做更多的事情。从这个角度上看,salting增加了写操作的吞吐量,却也增大了读操作的开销。 2)Hashing Hashing策略也是一种特殊的salting,是用一个单向的 hash 来取代随机指派前缀。 这样能使一个给定rowkey的行在“salted”时有相同的前缀,因此,这样既可以分散RegionServer间的负载的,同时也允许在读操作时能够预测这个前缀值是什么。确定性hash( deterministic hash )可以让客户端重建完整的行键,然后就可以像正常一样用Get方法查询确定的行。 3)reverse key 第三种预防hotspotting的方法是反转一段固定长度或者可数的键,让变化最多的某个位置放在rowkey的第一位, 副作用:对于Get操作没有影响,但是不利于Scan操作进行范围查询,因为数据在原RowKey上的顺序已经被打乱。 预分区 在 HBase核心特性—region split 中,我们知道已经提到过关于预分区。 主要原因是当一张表被首次创建时,只会分配一个region给这个表。因此,在刚刚开始时,所有读写请求都会落在这个region所在的region server上,而不管你整个集群有多少个region server。不能充分地利用集群的分布式特性。 因此,预分区主要也是解决“热点”问题。 最为常见的建表语句为: create ‘tb’,{NAME => ‘f1’,COMPRESSION => ‘snappy’ }, { NUMREGIONS => 50, SPLITALGO => ‘HexStringSplit’ } NUMREGIONS 为 region的个数,一般按照每个region 8-10GB左右来计算region数量,如果集群规模非常大,那么region数量可以适当取大一些 SPLITALGO 为 rowkey分割的算法,Hbase自带了三种pre-split的算法,分别是 HexStringSplit、DecimalStringSplit 和 UniformSplit。 各种Split算法适用场景: HexStringSplit: rowkey是十六进制的字符串作为前缀的 DecimalStringSplit: rowkey是10进制数字字符串作为前缀的 UniformSplit: rowkey前缀完全随机 读性能优化 前面主要讲一些设计方面的优化点。那如果在HBase的使用过程中,发现查询较慢,那么就需要根据具体情况,分析查询慢的原因,并采取相应的策略。 【云栖号在线课堂】每天都有产品技术专家分享!课程地址:https://yqh.aliyun.com/zhibo 立即加入社群,与专家面对面,及时了解课程最新动态!【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK 原文发布时间:2020-03-24本文作者: 阿丸笔记 本文来自:“CSDN云计算”,了解相关信息可以关注“CSDN云计算”

优秀的个人博客,低调大师

Flink 实战:如何解决生产环境中的技术难题?

大数据作为未来技术的基石已成为国家基础性战略资源,挖掘数据无穷潜力,将算力推至极致是整个社会面临的挑战与难题。 Apache Flink 作为业界公认为最好的流计算引擎,不仅仅局限于做流处理,而是一套兼具流、批、机器学习等多种计算功能的大数据引擎,以其高吞吐低延时的优异实时计算能力、支持海量数据的亚秒级快速响应帮助企业和开发者实现数据算力升级,并成为阿里、腾讯、滴滴、美团、字节跳动、Netflix、Lyft 等国内外知名公司建设实时计算平台的首选。 更好的释放 Flink 的强大算力,需要解决哪些问题?如何进行技术选型?针对业务的特点如何进行相应改进? 实践过程中需要规避哪些坑? 11 月 28-30日,Flink Forward Asia 重磅开启!由来自阿里巴巴及 Ververica 的 19 位 Flink 技术专家们倾力打造的四

优秀的个人博客,低调大师

DataGrip 2019.3 EAP 4 发布,多引擎数据库环境

DataGrip 2019.3 的第四个早期访问计划发布了,主要更新内容如下: DBE-7976:现在可以从数据编辑器上下文中使用“修改表”操作,如果要在编辑表数据时添加新列,只需按 Ctr/Cmd+F6 继续。 DBE-9336: Intentions 现在在例程的源代码中起作用。例如,如果要通过星号上的 Alt+Enter 扩展通配符,现在就可以这样做。 DBE-9548:现在,如果结果集包含具有相同名称的多个列,那么从中创建表就不会对歧义名称造成任何问题。 DBE-9428:引入了新的意图,以帮助将 JOIN ON 转换为 JOIN USING,反之亦然。 发布公告: https://blog.jetbrains.com/datagrip/2019/11/15/datagrip-2019-3-eap-4/

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册