Vagrant集群配置,模拟多机分布式环境

Vagrant是一个很好的虚拟机管理软件,常用来作为团队统一开发环境的工具。基本操作这里就不讲了,大家可以自己搜索。这里推荐篇我们以前老大写的一篇文章:浅谈好居如何做到统一化的开发环境

Vagrant搭建集群,可以模拟多机环境,平时用来研究分布式系统。比如服务器负载均衡、Web子系统间通信、数据库主从复制读写分离、以及Ansible自动化部署等等。

其实Vagrant可以很方便的实现集群,只需简单的配置下Vagrantfile。

可以先自己添加一个专门用来做集群的box,然后修改Vagrantfile文件,内容大致如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Vagrant.configure(2) do |config|
# 如果需要三台就(1..3)的形式
(1..2).each do |i|
config.vm.define "cluster#{i}" do |node|
node.vm.box = "centos6"
node.vm.hostname = "cluster#{i}"
node.vm.network "private_network", type: "dhcp"
# 映射目录 根据自己实际情况配置
node.vm.synced_folder "../var/www/cluster", "/var/www/cluster"
node.vm.provider "virtualbox" do |v|
v.name = "cluster#{i}"
v.memory = 512
v.cpus = 1
end
end
end
end

我这里ip是dhcp动态获取,你也可以结合自己网段指定ip。

改好后,vagrant up启动服务器:

查看各主机ssh信息:

1
vagrant ssh-config

比如这里可以使用vagrant ssh cluster1 进入cluster1主机,进去后ifconifg查下ip,后面可以用ssh客户端工具连接这条主机。

好了,是不是很简单,接下来去研究搭建你的分布式系统吧!

Share Comments

Github pages + hexo 博客搭建教程

Github pages的规则

首先得知道Github pages的规则:每个Github账号(比如Username)下面只能建立一个Pages,且命名必须符合这样的规则:”username/username.github.io”

创建成功后,username.github.io就是你的域名(当然你可以通过别名解析绑定自己的域名)

实战:

1, 在Github建立一个新的Repository:命名为:username.github.io

2, 本地clone仓库:

1
git clone https://github.com/username/username.github.io

3, 进入文件夹,新建index.html

1
2
cd username.github.io 
echo "Hello World" > index.html

4, 执行命令:

1
2
3
git add .
git commit -m "Initial commit"
git push -u origin master

然后访问username.github.io,大功告成!

使用Hexo管理你的博客

平时可以这样发布自己的博客,但是比较麻烦,我们可以通过相应的工具来管理Pages。比如Jekyll、Hexo等,这些工具原理就是把Markdown自动转化为Html便于我们书写博客,接下来详细介绍从零开始用Hexo+Github Pages搭建博客。

1, 创建repository(如果做了上述实践部分就先删除此repository,从头来)
在github建立一个新的repository:命名为:username.github.io, 并且勾选创建readme.md已初始化仓库这项。
注: 替换username为你的账号名

2,在本地git clone 你的博客项目地址

3,进入clone的项目目录,注意此时是在master分支,而master分支平常放生成的博客页面,所以我们现在创建一个hexo分支,用来管理hexo相关文件。

1
git checkout -b hexo

4, 安装hexo,以及相关扩展依赖(建议把npm安装源改为国内的,淘宝就有提供,这样能提高安装速度)

1
npm  install -g hexo
1
hexo init    // 初始化

注意:hexo init要求当前目录是一个空目录,我这里解决办法是在执行hexo init 前把当前文件夹的文件都移到外面去(包括.git仓库目录),初始化完成后马上把文件移回来(一般只会有README.MD文件和.git目录)

1
npm install    // 安装依赖

(此阶段若遇到 symlink error问题,则加参数:-no-bin-links)

1
npm install hexo-deployer-git --save    // 安装deployer扩展

5, 修改_config.yml文件的deploy选项(如果你准备装第6步的博客主题,则可以放到第6步一起操作):

1
2
3
4
deploy:
type: git
repo: (对应你博客仓库的SSH地址)
branch: master

此外其他相关配置信息都改成你自己的,比如author这些

6, 选一个博客主题,我这里用的:icarus

1
git clone https://github.com/ppoffice/hexo-theme-icarus.git themes/icarus

进入 themes/icarus 目录,把该主题提供的实例的配置文件 编辑下然后作为自己的配置文件

1
cp _config.yml.example _config.yml

然后回到项目根目录,编辑主配置_config.yml 添加theme配置

1
theme: icarus

注:第5步如果没操作,则在这里一起操作

7, 提交到仓库

1
2
3
git add .
git commit -m 'hexo init'
git push -u origin hexo

8,发布一篇博文

1
hexo new "your blog title"

(此步若遇到local hexo not found:rm -rf node_modules/ && npm install解决)
然后会在source/_posts下建立一个your-blog-title.md的文件,
你可以编辑此文件书写你想写的博客内容(Markdown格式)
写好后执行一次commit
然后执行生成博客Html文件和发布命令

1
hexo generate -d

如果顺利的话,博客内容会发布到master分支

9, 此时可以输入username.github.io来访问你的博客

至此你的博客已经成功搭建!

###平常博客写作和管理流程###

1, 都在hexo分支上工作,用hexo new title建立新的md文件,然后书写,然后”git add . “,”git commit -m ‘’ “ ,”git push”提交。好了之后执行hexo generate -d 发布博客

2, 假如换了电脑后,先clone下你github上的博客仓库,然后 npm install -g hexo,npm install 和npm install hexo-deployer-git –save(和安装命令差不多,但是不要使用hexo init命令,因为仓库中已存在),然后走正常博客书写发布流程即可。

^_^完结

Share Comments

开篇

博客这块,相信很多爱折腾的人都一样,有的是自己写程序,有的是自己找源码来放在虚拟主机上运行,有的寄托于其他网站。但相信许多人的归宿都一样:托管于Github pages这类第三方托管服务上。我这博客现在就是放在Github pages上面。

以前也断断续续写过博客,但最终都放弃了。这次决定重新拾起是因为在工作中愈发意识到知识管理的重要性,系统的知识体系对一个研究者而言是很有裨益的。

我平常的工作主要在Web开发这块,Web主要包括前端后端服务器端。近几年随着前端迅猛的发展,彻底与后端耦合开了,后端只需提供API,而这种模式也更利于服务器端架构。比如最近流行的微服务架构,把以前大系统拆分,各子系统独立部署,可以分布式部署,然后管理各子系统。也逐渐衍生出自动化部署、统一配置中心、API网关 、负载均衡、服务发现、服务治理 、监控等知识。细的来讲,从前端框架React.js、Vue.js、Angular.js 甚至后面的Rxjs到包管理Npm、Yarn到构建工具Webpack等到写Api的语言无论PHP,Go甚至Nginx+Lua这块,再到服务器端架构,一切都是那么深奥而有趣,每一个领域都值得花费时间心思去研究、探索。

而这个博客,将记录我在探索之路上的点滴。

Share Comments