cheap medications premarin 1.25mg tablets estrogen contents, cheap medications buy wellbutrin no rx needed, cheap online buy baclofen online, cheap online order flagyl er pay pal online without prescription, pharmacy cheapest where to buy buy doxycycline online, online cheap medications buy overnight delivery lasix fedex, buy cheap purchase diflucan, cheap online buy neurontin online overnight cod, cheap pharmacy fedex acyclovir overnight without a rx, order cheap what is norvasc, buying cheap buy arimidex free consultation,

存档

‘DevOps & CI/CD’ 分类的存档

Spring Cloud on DC/OS

2018年8月27日 没有评论

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它与Netflix OSS技术体系整合为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

Spring Cloud Data Flow Server for Apache Mesos 适用于mesos平台的springcloud数据流服务器(DCOS构建)

cloud-native-stacks

cloud-native-stacks

Spring Cloud Netflix

目前,研发可考虑使用Spring Cloud作为微服务的基础框架。

假如目前产品的输出物是一个jar包,一个包含Jetty和Sprig Boot的软件包,数据库是运行在其它服务器上的实例。

运行:java -jar huihoo-1.0.0.jar

将huihoo-1.0.0.jar部署DC/OS,进行Jetty web server层的集群。

参考:

Spring Boot with Docker

1、下载Spring Boot 镜像

$ docker pull java:openjdk-8

2、创建 huihoo-app

mkdir huihoo-docker

touch Dockerfile

FROM java:openjdk-8

VOLUME /tmp

ADD huihoo-1.0.0.jar app.jar

RUN sh -c 'touch /app.jar'

ENV JAVA_OPTS=""

ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

3、构建 huihoo-app 镜像

docker build -t huihoo/spring-boot-docker .

4、上传仓库

docker login

docker push huihoo/spring-boot-docker

本地运行

docker run -p 8080:8080 -t huihoo/spring-boot-docker

http://localhost:8080/huihoo/v1/push/wechat/templateCustomer

5、通过Marathon JSON部署3个实例的huihoo-app,并通过Marathon-LB进行负载均衡。

jar的打包、上传、多实例部署的过程是OK的,目前主要问题是访问外部的网络资源,涉及域名解析的问题,如:service.huihoo.com

服务发现包

vim /etc/hosts

127.0.0.1 hh1 hh2

docker run -p 8761:8761 -t huihoo/server-discovery –spring.profiles.active=hh1

docker run -p 8762:8762 -t huihoo/server-discovery –spring.profiles.active=hh2

出现的问题:

点击hh2,连接被重置。

com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused (Connection refused)    at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar!/:1.19.1]

WARN 6 — [nfoReplicator-0] c.n.d.s.t.d.RetryableEurekaHttpClient    : Request execution failed with message: java.net.ConnectException: Connection refused (Connection refused)

折腾 Spring Cloud Samples 各种例子。

Spring Cloud Marathon

The Spring Cloud Deployer project defines a Service Provider Interface (SPI) for deploying long lived applications and short lived tasks.

https://github.com/spring-cloud/spring-cloud-deployer-mesos

$ ./mvnw clean install

分类: DevOps & CI/CD 标签:

腾讯蓝鲸开源PaaS、DevOps平台

2018年8月11日 没有评论

腾讯蓝鲸智云配置平台(blueking cmdb)是一个开源一站式运维平台,采用MIT许可协议。。

蓝鲸智云体系由八大平台组成,即管控平台、配置平台、作业平台、数据平台、容器管理平台、AI平台、集成平台和移动平台,为各种云(公有云、私有云、混合云)的用户提供不同场景、不同需求的一站式技术运营解决方案。

包含的功能有:

  • 用户管理
  • 业务管理
  • 拓扑(集群、模块)管理
  • 资源池管理
  • 主机管理
  • 日志查询

腾讯蓝鲸社区版、企业版、公有云版各版本产品的功能/服务差异

blueking-01

blueking-02

blueking-03

blueking-04

blueking-05

blueking-06

blueking-07

blueking-08

八大功能:

  • 配置管理
  • 作业执行
  • DevOps
  • 移动运维
  • 任务调度
  • 数据分析
  • 监控告警
  • CI/CD

链接:

文档:
如何从零打造百人级别的DevOps团队

blueking-09

blueking-10

blueking-11

blueking-12

blueking-13

一切皆监控

blueking-14

蓝鲸源代码分析

最新版本使用Go语言编写。

早期版本使用了CodeIgniter  PHP框架,熟悉这个框架,对于后续扩展蓝鲸很重要。


分类: DevOps & CI/CD 标签:

Open Blue Ocean

2018年8月3日 2 条评论

Jenkins 提供了 Open Blue Ocean 持续交付的流水线能力,是传统构建样式的升级版。

Open-Blue-Ocean-01

https://jenkins.io/doc/book/blueocean/pipeline-run-details/

一个真实的Pipeline


pipeline

学习其它厂商的最佳实践,并逐步实现自己的Pipeline最佳实践。

Jenkins Pipeline Best Practices
CloudBees Top 10 Best Practices

图为cloudbees流水线

Open-Blue-Ocean-03

有不少插件可供选择

Open-Blue-Ocean-04

Jenkins pipeline 创建管理我们由Open Blue Ocean来完成,此外还有classic UI 和在 SCM手动创建Jenkinsfile。

这里可以对Pipeline Syntax(Pipeline domain-specific language (DSL) syntax)做一定了解。

得益于Jenkins内嵌的Groovy支持,加上丰富的Step库,通过编写自定义Pipeline脚本你几乎可以实现任何复杂的构建、发布流程。

https://jenkins.io/doc/pipeline/steps/

一些配置信息(仅供参考):

http://192.168.0.249:26451/service/dev/jenkins-prod/job/dev-huihoo-edu/configure

git仓库:git@dev.huihoo.com:server/huihoo-edu.git
构建环境:Mesos Single-Use Slave
Gradle版本:Gradle 3.3
仓库名和标签:huihoo/huihoo-edu 1.0.0
Docker registry URL:http://master.mesos:5000
Marathon URL:http://leader.mesos/service/marathon-user

Docker image for Pipeline demo

docker volume create --name=m2repo
sudo chmod a+rw $(docker volume inspect -f '{{.Mountpoint}}' m2repo)
docker run --rm -p 127.0.0.1:2222:2222 -p 127.0.0.1:8080:8080 -p 127.0.0.1:8081:8081 -p 127.0.0.1:9418:9418 -ti -v m2repo:/m2repo jenkinsci/workflow-demo

Open-Blue-Ocean-05

Open-Blue-Ocean-06

Open-Blue-Ocean-07

Open-Blue-Ocean-08

一个简单的Pipeline,仅供参考

pipeline {
    agent none
    stages {
        stage('Example Build') {
            agent { docker 'maven:3-alpine' }
            steps {
                echo 'Hello, Maven'
                sh 'mvn --version'
            }
        }
        stage('Example Test') {
            agent { docker 'openjdk:8-jre' }
            steps {
                echo 'Hello, Java'
                sh 'java -version'
            }
        }
    }
}

得益于Jenkins内嵌的Groovy支持,加上丰富的step库,通过编写自定义Pipeline脚本你几乎可以实现任何复杂的构建、发布流程。也可将共享的Groovy脚本封装到一个自定义Jenkins Plugin中,然后安装到需要的Jenkins实例中,以后也可以进行统一升级,有效降低了维护成本。

通过Groovy编写Pipeline。

node {
stage 'Stage 1'
echo 'Hello World 1'
stage 'Stage 2'
echo 'Hello World 2'
stage 'Stage 3'
echo 'Hello World 3'
stage 'Stage 4'
echo 'Hello World 4'
}

Open-Blue-Ocean-09

大家可试着对某个Git仓库拉代码、编译、打包、部署

流水线语法:http://192.168.0.249:10082/service/dev/jenkins-prod/job/huihoo-edu-pipeline/pipeline-syntax

可由Snippet Generator和Declarative Directive Generator生成流水线脚本。

需要 Docker Pipeline 插件

流水线需要的环境

Requirements To Use Durability Settings

  • Jenkins LTS 2.73+ or higher (or a weekly 2.62+)
  • For all the Pipeline plugins below, at least the specified minimum version must be installed
    • Pipeline: API (workflow-api) v2.25
    • Pipeline: Groovy (workflow-cps) v2.43
    • Pipeline: Job (workflow-job) v2.17
    • Pipeline: Supporting APIs (workflow-support) v2.17
    • Pipeline: Multibranch (workflow-multibranch) v2.17 – optional, only needed to enable this setting for multibranch pipelines.
  • Restart the master to use the updated plugins – note: you need all of them to take advantage

Open-Blue-Ocean-10

有很多 Jenkins Pipeline step 类型可供选择。

Shell Script
Print Message
Enforce time limit
Retry the body up to N times
Sleep
Windows Batch Script
Archive the artifacts
Allocate node
Accept GitLab Merge Request
Add comment on GitLab Merge Request
Allocate a docker node
Allocate workspace
Archive JUnit-formatted test results
Artifact Resolver
Bind credentials to variables
Build a job
Catch error and set build result
Change current directory
Checks if running on a Unix-like node
Cloud template provisioning
Color ANSI Console Output
Copy artifacts from another project
Determine current directory
Docker Node (⚠️ Experimental)
Error signal
Evaluate a Groovy source file into the Pipeline script
Expand a string containing macros
General Build Step
General Build Wrapper
General SCM
Git
Invoke Nexus Policy Evaluation
JIRA: Add a comment to issue(s)
JIRA: Issue selector
JIRA: Search issues
Load a resource file from a shared library
Load a shared library on the fly
Mail
Marathon Deployment
Nexus Artifact Uploader
Nexus Repository Manager Publisher
Notify gitlab about pending builds
PowerShell Script
Process Job DSLs
Provide Maven environment
Publish artifacts to S3 Bucket
Publish Cobertura Coverage Report
Publish HTML reports
Read file from workspace
Read trusted file from SCM
Record fingerprints of files to track usage
Recursively delete the current directory from the workspace
Resolves an SCM from an SCM Source and a list of candidate target branch names
Restore files previously stashed
Run arbitrary Pipeline script
S3 Copy Artifact
Set environment variables
SSH Agent
Stash some files to be used later in the build
Subversion
The milestone step forces all builds to go through in order
Timestamps
Update the commit status in GitLab
Update the commit status in GitLab depending on the build status
Use a tool from a predefined Tool Installation
Validate a file containing a Declarative Pipeline
Verify if file exists in workspace
Wait for condition
Wait for interactive input
Write file to workspace


分类: DevOps & CI/CD, Mesos & DC/OS 标签:

DC/OS Marathon实践

2018年8月3日 没有评论

Marathon是在Mesos上运行长期服务的框架,它好比数据中心或集群的 init.d,可以确保在其上运行的服务一直运行着。它是高可用、弹性伸缩的关键。

Marathon拥有非常完备的REST API来管理服务的生命周期以及Java、Scala、Python、Ruby等各种客户端,我们可以基于做些API做些管理扩展。

http://192.168.0.250:8080/api-console/index.html

启动Marathon需要Mesos Master和ZooKeeper地址,如:

$./bin/start –master zk://master:2181/mesos –zk master:2181

DC/OS上的ZK配置:

zk://zk-1.zk:2181,zk-2.zk:2181,zk-3.zk:2181,zk-4.zk:2181,zk-5.zk:2181/marathon

Marathon Examples 可作为入门实践,并维护一套我们需要的JSON脚本。

Marathon-LB是DC/OS环境下服务发现和负载均衡工具,基于HAProxy构建,可完成应用的自动伸缩

marathon-lb

一些参考资源:

Marathon Configuration Reference


分类: DevOps & CI/CD 标签:

持续交付的三条主线

2018年8月2日 没有评论

持续交付可分解成三条主线:

  • 从Code到Artifacts仓库;
  • 从Artifacts到Running Service;
  • 从开发、测试环境到准生产、生产环境。

Image

目前仓库主要有:

目前,已在DC/OS上搭建了Nexus仓库并正使用中。
nexus-01

nexus-02

也可使用阿里云Maven仓库

nexus-03

要达成未来每天部署上线N次,这三条主线需要不断优化、自动化和高效运维。

Nexus Jenkins Steps


分类: DevOps & CI/CD, Mesos & DC/OS 标签:

微服务Microservices框架

2018年7月6日 没有评论

一说到微服务,我们马上会想到:Spring Cloud & Netflix OSS

Microservices

其实,还有一些微服务框架值得更多关注,如Go开发的Go kit、Istio和C++开发的Service Fabric和TSeer 。

https://github.com/go-kit/kit
https://github.com/istio/istio
https://github.com/Microsoft/service-fabric
https://github.com/Tencent/TSeer

TSeer是一套服务注册发现容错的解决方案,是对Tars名字服务功能的轻量化。在腾讯浏览器、应用宝、管家、手机书城、腾讯文学、广点通等众多业务中广泛采用,目前日均承载百亿级别的请求量。

pptseer

此外,ACE也可以作为一个不错的微服务框架使用,通过ACE Service Configurator可以动态地配置以下服务:短时服务、长时服务、内部服务、外部服务、有状态服务、无状态服务、分层式/模块化服务等等。

Microservices-3

Microservices-4

Microservices-5

Java是大多数公司研发的首选,其实,Go语言对构建微服务有天然优势,基于Go、Docker & K8S 和 OpenShift 能快速构建完整的互联网应用基础设施和交付平台。

将Istio分布式集群部署:Istio on Kubernetes on Mesos on AWS

istio-k8s-dcos

个人倾向,通过Go去更多替代Java,且从容器、微服务和持续交付快速入手。

有关微服务的一些信息:Microservices

Microservices-1

Microservices-2

另外,除GitLab外,Gogs也可作为更多Git仓库选择。