VMwarevSphere5.1群集深入解析(二十八)vSphere配置

作者: 云计算机网 分类: 云计算知识 发布时间: 2019-03-17 15:48

第四部分群集架构的扩展

第二章vSphere配置

这种情况下,我们的重点是扩展群集环境中vSphereHA,vSphereDRS和存储DRS之间的关系,以及围绕这些vSphere组件在设计和运作方面经常被忽视和低估的考虑。历来很多重点放在存储层,而很少考虑工作负载如何配置和管理。

如我们之前提到的,扩展群集关键的驱动力是工作负载平衡和灾难避免。怎样确认我们的环境是处在合理的平衡中而没有影响可用性或者大幅减少操作开销?我们怎样建立配置需求和持续管理过程,我们怎样定期验证我们仍然满足我们的需求?定义和遵从需求失败会使环境混乱难以管理、各种故障场景难以预测,也会希望它来帮助你。事实上,忽略过程会导致故障事件中产生额外的停机时间。

这三个VMwarevSphere功能每一个都有特别的配置需求,能加强你环境的弹性和工作负载的可用性,通过这一部分,架构建议将产生,这些建议将基于测试期间的各种场景发现的问题。每一个故障场景测试在接下来的章节中都被记录,请记住,这些故障场景直接应用这些实例的配置,基于你的实施和配置选项你的环境可能会受到额外故障。

vSphereHA特性

我们的实例环境中有4台主机和一个统一扩展存储解决方案。当全部站点发生故障是需要考虑弹性架构的一个场景,我们建议开启接入控制(AdmissionControl),工作负载的可用性是许多扩展群集环境的主要驱动力,它建议有足够的容量允许全站点故障,尽管如此,两个站点将平等的分配主机,来确保所有的工作负载能通过HA重新开始,建议配置接入控制策略为50%。

我们建议使用基于百分比的策略来提供架构的灵活性和减少操作开销,尽管新主机加入环境中没有必要改变百分比,而且没有整合率偏差,导致使用虚拟机级别预留资源的风险,更多详情请见第6章。

HA使用心跳检测机制来验证主机的状态,如第3章解释的有两个心跳检测机制;称为网络和数据存储心跳检测,网络心跳检测时HA验证主机的主要机制,数据存储心跳检测是一旦网络心跳检测失败通过HA来确定主机状态的另一种机制。

如果主机没有收到任何的心跳检测,它检测是否仅仅是从其它主机隔离或者网络中完全隔离。这个过程包括了Ping主机的默认网关,或者一个或者多个手工设置的隔离地址来代替主机网关,从而加强隔离检测的可靠性。我们建议指定最少两个额外的隔离地址并且每个地址能到本地网络,即使在站点之间连接失败的情况下,开启HA能够验证完整的网络隔离,并提供冗余允许一个IP故障。

但是,如果主机被隔离,vSphereHA触发响应,这在之前有解释过,叫做隔离响应,当主机同管理网络之间的连接断开,触发隔离响应来保证妥善管理虚拟机。隔离响应在第三章有深入讨论,根据使用不同的存储和物理网络完成,隔离响应用来在需要时做出决定,我们提到在第四章,表3中支持的决定。

  • 声明:由于本人对于Git的学习还处于摸索阶段,对有些概念的理解或许只是我断章取义,有曲解误导的地方还请见谅指正!

    一、分支1.1分支的概念。

    对于的分支的理解,我们可以用模块化这个词来解释;在日常工作中,一个项目的开发模式往往是模块化,团队协作式的开发。这样我们项目的进度可以称得上多核并发式的开发了。这种模块化的开发要求我们尽可能的高内聚低耦合以免造成一只胳膊没了整个人都废了的局面。因此在所有的版本控制器对代码进行管理的时候都引入了分支这个概念。那么分支是什么呢?

    分支是相对于主干来说的,或者是相对于主分支来说的,它是用来将特性开发绝缘开来的。我们在创建仓库的时候,系统会默认创建master分支,也就是我们默认的主干分支。当我们开发一个项目的时候,在框架搭建完成后,需要开发一个一个模块的功能的时候,我们往往会创建一个一个的分支来进行分别开发,没跟人都在自己的一亩三分地里劳作,相互没有影响,当某一项功能或者模块开发完成通过测试的时候在整合到主框架上,这样做的好处是,可以避免单个模块的开发工作的缺陷造成整个框架系统无法编译通过,无法正常运转。如果你是一个Android开发人员,我们可以用主线程(UI)线程和子线程来理解,比较类似的是当我们创建一个Activity的时候,系统会默认创建一个主线程,也就是我们的UI线程,如果我们在需要访问网络获取数据的时候(耗时操作),我们一般的做法就是我们会重新开启一个子线程进行远程数据的获取与解析,当我们完成数据读取操作后在对UI线程进行更新,以免耗时操作造成UI线程的阻塞(ANR)。

    1.2创建分支与分支合并

    我们每次执行提交的时候,git都会把它们串成一条时间线,这条时间线就是一个分支。经过前一阶段的学习,我们知道,在我们的仓库中只有一个主分支,也就是只有一条时间线,随着我们每一次的提交,master分支的时间想也就越长。当我们需要开发一个新的功能的时候,我们可以新建一个分支的时候(dev)来进行该功能模块的开发工作,Git就会同时新建了一个指针(dev),把HEAD指向dev分支,表示当前分支在dev上。那么对工作区的修改和提交就是在dev分支上了,我们每一次提交后,dev指针就会往前移动一次,不会影响到master分支。当我们在dev分支上的开发工作完成以后,通过测试验证后,再把dev分支与master进行合并。那么如何合并呢?我们可以让master分支指向dev分支(dev分支又指向当前分支下的最后一次提交)的当前提交,也就是把这个dev分支作为master主干分支的一次修改来进行提交,这样就完成了合并。合并完成后我们甚至可以删除被合并的dev分支。#p#分页标题#e#

    下面我们来进行实际的命令操作:

    1.2.1 创建分支

    $ git branch dev

    !注意:执行上述命令,没有任何提示!

    1.2.2切换分支

    $ git checkout devSwitched to branch 'dev'

    !注意:


    1.2.3创建并切换分支命令

    使用git checkout命令加上-b参数表示创建并切换分支,相当于上述两条命令;

    $ git checkout -b dev

    1.2.4查看当前分支

    $ git branch* dev  master
    绿色部分为当前分所在的分支。

    STAR@STAR-PC ~/learngit (dev)$ git add test.txt
    STAR@STAR-PC ~/learngit (dev)$ git commit -m "create new branch"[dev cee7bfc] create new branch 1 file changed, 2 insertions(+), 1 deletion(-)

    STAR@STAR-PC ~/learngit (dev)
    $ git commit -m "create new branch"
    [dev cee7bfc] create new branch
    1 file changed, 2 insertions(+), 1 deletion(-)
    上述代码在dev分之下提交修改。

    STAR@STAR-PC ~/learngit (dev)$ git checkout masterSwitched to branch 'master'Your branch is ahead of 'origin/master' by 1 commit.  (use "git push" to publish your local commits)
    上述命令是我们在dev分之下条修改后进行的分支切换操作,此时我们查看工作区,则在dev分支下的修改并不存在。此时若想在master看到我们在dev分支下的修改,则需要合并分支。

    $ git merge devUpdating 94bf25d..cee7bfcFast-forward test.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
    上述命令的执行完成了整合,此时查看工作区的文件发现,主分支下的文件已经能够看到之前在dev分支下的修改了。

    注意!上述命令执行后打印的提示信息中的“Fast-forward”,告诉我们此次合并为“快进模式”也就是直接让master指针指向dev的当前提交。

    1.2.5删除分支

    由于之前的内容我们提到过,在分支合并后我们可以删除已经合并的分支,因此我们来删除dev分支,并查看所有分支。

    STAR@STAR-PC ~/learngit (master)$  git branch -d devDeleted branch dev (was cee7bfc).STAR@STAR-PC ~/learngit (master)$ git branch* master
    提示信息告诉我们dev分支已删除,剩余分支为master,绿色表示当前分支为master
    1.3解决分支合并冲突

    你看到这个题目的时候或许心里会有疑惑?上述的操作不是很顺利吗?怎么会有冲突呢?

    我们回头看看上述分支合并的操作就会发现,我们在合并分支的时候,新建分支dev有改动,而master分支没有提交任何修改,但是如果我们在合并分支的时候,master和dev分支均提交了修改呢?这样一来合并分支会还会一帆风顺吗?我们带着这个问题来进行接下来的操作。#p#分页标题#e#

    我们首先创建一个分支dev,然后分别在两个分支上提交修改。

    STAR@STAR-PC ~/learngit (master)$ git checkout -b dev2Switched to a new branch 'dev2'STAR@STAR-PC ~/learngit (dev2)$ git add test.txtSTAR@STAR-PC ~/learngit (dev2)$ git commit -m "create a new brance dev2"[dev2 046661c] create a new brance dev2 1 file changed, 2 insertions(+), 1 deletion(-)STAR@STAR-PC ~/learngit (dev2)$ git switch mastergit: 'switch' is not a git command. See 'git --help'.STAR@STAR-PC ~/learngit (dev2)$ git checkout masterSwitched to branch 'master'Your branch is ahead of 'origin/master' by 2 commits.  (use "git push" to publish your local commits)STAR@STAR-PC ~/learngit (master)$ git add test.txtSTAR@STAR-PC ~/learngit (master)$ git commit -m "add a new line for master"[master 835e78c] add a new line for master 1 file changed, 2 insertions(+), 1 deletion(-)
    合并分支:
    $ git merge dev2Auto-merging test.txtCONFLICT (content): Merge conflict in test.txtAutomatic merge failed; fix conflicts and then commit the result.
    根据上述提示信息我们发现,test.txt文件发生冲突,合并失败。我们可以根据git status来查看冲突文件。
    $ git statusOn branch masterYour branch is ahead of 'origin/master' by 3 commits.  (use "git push" to publish your local commits)You have unmerged paths.  (fix conflicts and run "git commit")Unmerged paths:  (use "git add <file>..." to mark resolution)        both modified:   test.txtno changes added to commit (use "git add" and/or "git commit -a")
    或许我们也可以直接查看test.txt的内容:

    <<<<<<< HEADadd a new line for master。=======create a new branch dev2.>>>>>>> dev2

    git用<<<<<<,======,>>>>>>标记出不同分支的内容,我们可以对文件进行修改如下;

    add a new line for master。create a new branch dev2.
    并在master进行提交:
    STAR@STAR-PC ~/learngit (master|MERGING)$ git add test.txtSTAR@STAR-PC ~/learngit (master|MERGING)$ git commit -m "fixed"[master 51e165e] fixed
    提示信息告诉我们问题已经解决。接着我们就可以删除dev2分支了。
    $ git branch -d dev2Deleted branch dev2 (was 046661c).
    !注意:我们之前的分至合并操作都是快速模式下执行的,但是在这种模式下删除分支后,会丢失分支信息。因此我们在合并分支的时候也可以采用no-ff方式,如下,有兴趣的朋友可以自己进行测试。
    $ git nerge --no-ff -m "merge with no-ff" dev
    1.4分支的隐藏与恢复

    如果我们在项目的开发过程中,需要暂时搁置当前分支的开发并在其他分之下进行操作,我们可以使用git stash对当前分支进行隐藏。#p#分页标题#e#

    $ git checkout -b dev3Switched to a new branch 'dev3'STAR@STAR-PC ~/learngit (dev3)$ git add test.txtSTAR@STAR-PC ~/learngit (dev3)$ git commit -m "use stash"[dev3 d358fab] use stash 1 file changed, 2 insertions(+), 1 deletion(-)
    查看状态,并执行git stash命令
    $ git statusOn branch dev3Changes not staged for commit:  (use "git add <file>..." to update what will be committed)  (use "git checkout -- <file>..." to discard changes in working directory)        modified:   test.txtno changes added to commit (use "git add" and/or "git commit -a")STAR@STAR-PC ~/learngit (dev3)$ git stashSaved working directory and index state WIP on dev3: d358fab use stashHEAD is now at d358fab use stash

    切换回主分支进行提交修改操作。

    $ git statusOn branch masterYour branch is ahead of 'origin/master' by 6 commits.  (use "git push" to publish your local commits)Changes not staged for commit:  (use "git add <file>..." to update what will be committed)  (use "git checkout -- <file>..." to discard changes in working directory)        modified:   test.txtno changes added to commit (use "git add" and/or "git commit -a")STAR@STAR-PC ~/learngit (master)$ git add test.txtSTAR@STAR-PC ~/learngit (master)$ git commit -m "hello"[master 404a601] hello 1 file changed, 2 insertions(+), 1 deletion(-)

    切换会dev3分支

    STAR@STAR-PC ~/learngit (master)$ git checkout dev3Switched to branch 'dev3'

    切换回分支之后,此时我们需要恢复现场。

    首先查看隐藏的现场。


    STAR@STAR-PC ~/learngit (dev3)$ git stash liststash@{0}: WIP on dev3: d358fab use stash

    恢复现场的方式有两种一种是使用git stash apply [stash@{0}],但是恢复后stash内容并不会删除,我们需要手动执行git stash drop 来删除。

    第二种执行git stash pop,恢复的同时删除stash的内容。


    $ git stash popOn branch dev3Changes not staged for commit:  (use "git add <file>..." to update what will be committed)  (use "git checkout -- <file>..." to discard changes in working directory)        modified:   test.txtno changes added to commit (use "git add" and/or "git commit -a")Dropped refs/stash@{0} (6696a348f1e160fa3f234dff50eaad0d59e4d264)

    dev3分支下完成修改后,执行合并分支的操作。


    !注意:如果我们开发完成一个分支,准备切换到主分支进行合并的时候,却发现该分支下的修改已经不需要了,这个时候我们如果要删除该分支我们需要执行git branch -D [分支名]

    1.5推送本地分支到远程分支

    一般来说我们都会在本地分支上进行修改和提交,然后与主干分支进行合并,再删除无用分支,因此我们向远程分支进行推送的时候只需要推送主干分支即可。#p#分页标题#e#


    $ git push -u origin masterUsername for 'https://github.com': huangyabin001Password for 'https://huangyabin001@github.com':Counting objects: 31, done.Delta compression using up to 4 threads.Compressing objects: 100% (19/19), done.Writing objects: 100% (29/29), 2.23 KiB | 0 bytes/s, done.Total 29 (delta 9), reused 0 (delta 0)To https://github.com/huangyabin001/learngit.git   1cf2aaa..7b69267  master -> masterBranch master set up to track remote branch master from origin.
    注意如果输入git push origin master则会出现一下问题:

    $ git push origin master
    fatal: unable to access 'https://github.com/huangyabin001/learngit.git/': Empty

    reply from server

    二、自定义Git2.1客户端配置2.1.1 core.editor

    Git默认会调用你的环境变量editor定义的值作为文本编辑器,如果没有定义的话,会调用vi来创建和编辑,我们可以使用core.editor改变默认编辑器。

    $ git config --global core.editor emacs

    2.1.2 help.autocorrect

    该配置只在Git1.6.1及以上版本有效,如果你错打了一条命令,会显示:

    $git com tig:'com' is not a git-command.See 'git --help'. Did you mean this?commit

    2.2Git的着色

    Git能够为输出到你终端的内容着色,以便你可以凭直观的界面进行快速的分析。

    Git会按照你的需要自动为大部分的输出加上颜色

    $git config --global color.ui true

  • 相关推荐:

  • 深入学习:Windows下Git入
  • 深入学习:Windows下Git入
  • 深入浅出pig系列之一pi
  • 深入理解mahout基于hadoo
  • 深入理解openstack网络架构
  • 深入理解openstack网络架构
  • ZooKeeper学习总结第二篇:
  • 探索OpenStack之(7):N
  • 学习OpenStack之(6):N
  • 探索OpenStack之(9):深
  • 网站内容禁止违规转载,转载授权联系中国云计算网