精华内容
下载资源
问答
  • 用于帮助调整HPC系统的HPLinpack基准测试的工具。 此工具将创建HPL.dat文件,并将它们放置在以N,NB,P和Q的不同值命名的单独目录中。此工具可帮助确定这些不同数字的适当组合,并为您创建所有不同的HPL.dat文件。 ...
  • 图像压缩器 用于调整图像大小的压缩器和工具使用节点和某些包) 该游戏是使用以下技术制作的: 节点 JavaScript :TOP_arrow: 开发:Pedro Abreu #theFutureIsOpenSource
  • IIS管理器使用-修改根节点名称

    千次阅读 2018-10-19 16:38:40
    默认情况下,我们打开IIS管理器,可以看到类似如下界面   其根节点显示名称为   修改这个名称需要从两个地方调整。 1,首先通过“系统属性”对话框调整计算机名称 2,其次修改用户名称,pc机通过计算机...

    默认情况下,我们打开IIS管理器,可以看到类似如下界面

     

    其根节点显示名称为

     

    修改这个名称需要从两个地方调整。

    1,首先通过“系统属性”对话框调整计算机名称

    2,其次修改用户名称,pc机通过计算机管理工具

    服务器通过“服务器管理器”调整用户名称

     

    修改完成后,即可生成新的IIS根节点。如

    展开全文
  • 这个简单的命令行工具使用一个目录,并将该目录中的所有图像调整为指定的文件大小,然后将它们输出到输出目录中相同的文件夹结构中。 它还可以生成尺寸更小的缩略图。 要安装,请使用npm install -g recursive-...
  • Sprite Kit 使用其他节点类型

    千次阅读 2013-09-25 22:45:54
    虽然精灵是建立游戏时使用的最重要的元素,Sprite Kit还提供了许多其他的节点类。这些节点类中的大部分都提供可视化的内容,类似的SKSpriteNode类。剩下的则不直接绘制自己的内容,而是修改它们在节点树的后代的行为...
    虽然精灵是建立游戏时使用的最重要的元素,Sprite Kit还提供了许多其他的节点类。这些节点类中的大部分都提供可视化的内容,类似的
    SKSpriteNode
    类。剩下的则不直接绘制自己的内容,而是修改它们在节点树的后代的行为。表6-1列出了所有由Sprite Kit提供的节点类,包括你已经熟悉的
    SKScene
    
    SKSpriteNode
    类。
    
    表6-1    SpriteKit节点类
     
    描述
    SKNode
    所有的节点类都从该类派生。它不绘制任何东西。
    SKScene
    场景是在节点树的根节点。它控制动画和动作的处理。
    SKSpriteNode
    绘制纹理精灵的节点。
    SKLabelNode
    渲染文本字符串的节点。
    SKShapeNode
    渲染基于Core Graphics路径的形状的节点。
    SKVideoNode
    播放视频内容的节点。
    SKEmitterNode
    创建和渲染粒子的节点。
    SKCropNode
    使用遮罩(mask)修剪其子节点的节点。
    SKEffectNode
    应用Core Image滤镜到其子节点的节点。
    几乎所有对精灵节点使用的技术都可以应用到其他节点类型。例如,您可以使用动作让屏幕上的其他节点对象动起来,操纵它们的渲染顺序,并在物理模拟内使用它们。请继续阅读来了解如何在你的游戏中使用这些其他节点类。当你对这些类变得熟悉时,你就会明白Sprite Kit所有的可视化能力了。然后您就可以开始设计游戏的外观了。

    基础节点

    SKNode类不绘制任何可视化内容。它的主要作用是提供其他节点类使用的基础行为。然而,这并不意味着在你的游戏中你不能找到有用的方式使用SKNode对象。下面是一些你可能会在你的游戏引擎内使用基础节点的方式:

    • 你有一个由多个节点对象组合的内容,无论是精灵或其他内容的节点。不过,你想在你的游戏中把此内容作为一个单独的对象,而不想令其中任何一个内容节点成为根节点。这时用基本节点是合适的,因为你可以给定它在场景树的位置,然后让所有的其他节点作为其后代。这些个别的零部件,也可以相对于父节点的位置进行移动或调整。
    • 使用节点对象组织绘制的内容到一系列的层。例如,许多游戏有一个世界(world)的背景层,有另一个角色层,而文本和其他的游戏信息在第三层。其他游戏有更多的层。创建每个层为基本节点,并把它们按顺序插入到场景中。然后,必要时,可以使个别图层可见或不可见。
    • 您需要场景中一个不可见的对象,但要它执行一些其他必要的功能。例如,在一个地牢探索游戏,一个不可见的节点可能用来代表一个隐藏的陷阱。当另一个节点与它相交时,就会触发陷阱。(见“搜索物理体”。)或另一个例子,你可能会添加一个节点作为另一个节点的子节点,而后者代表玩家在视图中的点的位置。(请参阅“示例:在节点上中心定位场景” 。)
    在树中用这样的节点代表这些概念有以下优势:
    • 您可以通过添加或删除单个节点来添加或删除整个子树。这让场景管理变得有效率。
    • 您可以调整的树中的一个节点的属性,这些属性的效果向下传播到节点的后代。例如,如果在基本节点有精灵作为其子节点,旋转基本节点也将旋转所有精灵内容。
    • 您可以利用行动、物理接触和其他Sprite Kit的功能来实现此概念。
    子类化SKNode类是一个非常有用的方式在你的游戏中建立更复杂的行为。请参阅“使用子类化来创建您自己的节点行为。”

    标签节点显示文本

    几乎每个游戏都需要在某些时候显示文本,即使它只是对玩家显示“游戏结束” 。如果你必须自己在OpenGL中实现它,需要相当多的工作才能正确完成。但是Sprite Kit却很容易!SKLabelNode类完成所有加载字体和创建显示文本所需要的工作。

    清单6-1演示了如何创建一个新的文本标签。
    清单6-1   添加文本标签
    复制代码
    1.         SKLabelNode *winner = [SKLabelNode labelNodeWithFontNamed:@“Chalkduster”];
    2.         winner.text = “You Win!”
    3.         winner.fontSize = 65;
    4.         winner.fontColor = [SKColor greenColor];
    5.         winner.position = CGPointMake(CGRectGetMidX(self.bounds),
    6.                                              CGRectGetMidY(self.bounds));
    7.         [self addChild:winner];

    每次你更改标签节点的属性后,标签节点会在下一次渲染场景时自动更新。

    形状节点绘制基于路径的形状

    SKShapeNode类绘制一个标准的Core Graphics路径。图形路径是可以定义开放或封闭的子路径的直线和曲线的集合。形状节点包含单独的属性来指定线条的颜色和内部填充的颜色。

    Shape节点对于不能很容易地分解成纹理精灵的内容是有用的。纹理精灵比形状节点提供更高的性能,所以应在你的游戏引擎谨慎使用它们。然而,形状节点对于在你的游戏内容之上构建和显示调试信息是非常有用的。
    清单6-2展示了如何创建一个形状节点的例子。该示例创建一个蓝色填充色和白色边线的圆圈。路径被创建并附加到形状节点的path属性。
    清单6-2   通过路径创建一个形状节点
    复制代码
    1. SKShapeNode *ball = [[SKShapeNode alloc] init];
    2. CGMutablePathRef myPath = CGPathCreateMutable();
    3. CGPathAddArc(MYPATH, NULL, 0.0, 15.0, M_PI*2, YES);
    4. ball.path = myPath;
    5. ball.lineWidth = 1.0;
    6. ball.fillColor = [SKColor blueColor];
    7. ball.strokeColor = [SKColor whiteColor];
    8. ball.glowWidth = 0.5;

    从代码中你可以看到形状有三个基本要素:
    • 形状的内部填充。fillColor属性指定了用来填充内部的颜色。
    • 形状的边线渲染为一条线。strokeColor和lineWidth属性定义线条的笔触。
    • 从边线扩展的光晕(glow)。glowWidth和strokeColor属性定义光晕。
    你可以通过设置其颜色为[SKColor clearColor] 禁用任何这些元素。
    形状节点提供了一些属性让你控制形状如何融合到帧缓存(framebuffer)中。这些属性的使用方式与SKSpriteNode类的属性一样。请参阅“融合精灵到帧缓冲中。”

    视频节点播放电影

    SKVideoNode类使用AV Foundation框架显示电影内容。与任何其他节点一样,你可以把电影的节点放在节点树内的任何地方,Sprite Kit会正确渲染它。例如,某些用动作定义可能代价高昂的可视化行为,你可能会使用视频节点让它动起来。

    视频节点与精灵节点类似,但只提供功能的一个子集:
    • size属性被初始化成视频内容的基本尺寸,但如果你愿意,你可以改变它。视频内容将自动拉伸到新的尺寸。
    • anchorPoint属性定义了内容相对节点位置在什么地方显示。
    然而,应遵循以下限制:
    • 视频节点总是被均匀拉伸。
    • 视频节点不能被着色。
    • 视频节点总是使用阿尔法混合模式。
    像大部分的节点类那样,创建一个视频节点非常简单。清单6-3展示了一个典型的使用模式。它使用存储在应用程序bundle中的视频初始化视频节点,然后把节点添加到场景。调用节点的的play方法来启动视频播放。
    清单6-3   在场景中显示视频
    复制代码
    1. SKVideoNode *sample = [SKVideoNode videoNodeWithVideoFileNamed:@“sample.m4v”];
    2. sample.position = CGPointMake(CGRectGetMidX(self.frame),
    3.                                  CGRectGetMidY(self.frame));
    4. [self addChild:sample];
    5. [sample play];

    节点的play和pause方法让你可以控制播放。
    如果你需要更精确地控制视频的播放行为,你可以使用AV Foundation从你的视频内容创建AVPlayer对象,然后使用这个对象初始化视频节点。然后,使用AVPlayer对象来控制播放,而不是使用节点的播放方法。视频内容将自动显示在视频节点中。欲了解更多信息,请参阅AV Foundation编程指南。

    发射器节点创建粒子特效

    当一个SKEmitterNode对象被放置在场景中时,它会自动创建并渲染新的粒子。你可以用发射器节点来自动创建特殊效果,包括下雨、爆炸或发射。

    粒子类似于SKSpriteNode对象,它渲染有纹理或无纹理的图像,图像有尺寸、有颜色、且可以融合到场景。但是,粒子在两个重要的方面与精灵不同:
    • 粒子的纹理总是均匀拉伸。
    • 粒子不能用Sprite Kit中的对象表示(represented)。这意味着你不可以对粒子执行节点相关的任务,也不能给粒子关联物理体使它们与其他内容相互作用。
    粒子是纯粹的可视化对象,他们的行为完全由创建它们的发射器节点定义。发射节点包含很多属性来控制它生成的粒子的行为,包括:
    • 粒子的出生率和寿命。你还可以指定发射器自行关闭前能产生的粒子的最大数量。
    • 粒子的初始值,包括它的位置、方向、颜色和尺寸。这些初始值通常是随机的。
    • 在粒子生命期内应用到在粒子的变化。通常,这些被指定为一个随时间的变化率(rate-of-change)。例如,你可以指定一个粒子以特定的速度旋转,以弧度每秒为单位。发射器每一帧都自动更新粒子的数据。在大多数情况下,你还可以使用关键帧序列(keyframe sequences)创建更复杂的行为。例如,你可以为一个粒子指定一个关键帧序列,让它出来时很小,放大到较大的尺寸,然后在死亡前收缩。

    使用粒子发射器编辑器与发射器进行实验

    在大多数情况下,你永远不需要在你的游戏中直接配置发射器节点。相反,你应使用Xcode来配置发射器节点的属性。当你改变发射器节点的行为,Xcode立即为你提供一个更新过的视觉效果。一旦完成之后,Xcode可以归档(achieve)配置好的发射器。然后,在运行时,你的游戏使用此归档来实现实例化一个新的发射器节点。
    使用Xcode创建你的发射器节点有几个重要的优势:
    • 这是学习发射器类的能力的最好方式。
    • 你可以更迅速地试验新的粒子效果并立即看到结果。
    • 你把粒子效果的设计任务从使用它的编程任务中分离出来。这使得你的美工可以独立于你的游戏代码继续创作新的粒子效果。
    有关使用Xcode创建粒子效果的更多信息,请参阅粒子发射器编辑器指南。
    清单6-4展示了如何加载由Xcode创建的粒子效果。所有粒子效果都使用Cocoa的标准归档机制保存,所以代码首先创建烟雾效果的一个路径,然后加载归档。
    清单6-4   从文件加载粒子效果
    复制代码
    1.  - (SKEmitterNode *)newSmokeEmitter
    2. {
    3.     NSString *smokePath = [NSBundle mainBundle] pathForResource:@“smoke” ofType:“skn”];
    4.     SKEmitterNode *smoke = [NSKeyedUnarchiver unarchiveObjectWithFile:smokePath];
    5.     return smoke;
    6. }


    手动配置发射器如何创建新的粒子
    SKEmitterNode类提供了许多属性配置发射器节点的行为。事实上,Xcode inspector简单地设置这些属性的值。但是,你可以手工创建发射器节点并配置这些属性,或者你也可以从归档创建一个发射器节点并改变其属性值。例如,假设一下,你使用清单6-4中的烟雾效果来展示对火箭飞船的损坏。随着船受到更多的损坏,你可以提高发射器的出生率来添加更多的烟雾。
    用于配置发射器节点的属性的完整列表在SKEmitterNode类参考中描述。然而,首先理解如何创建新的粒子,其次理解一个典型粒子的属性如何在发射器节点中指定,对你是有用的。
    只要发射器节点在场景中,它就会发射新粒子。你使用以下属性定义它要创建多少粒子:
    • particleBirthRate属性指定发射器每秒创建的粒子数。
    • numParticlesToEmit属性指定发射器自行关闭之前要创建多少粒子。发射器还可以被配置为产生无限数量的粒子。
    当粒子被创建时,它的初始属性值是由发射器的属性决定的。对于每个粒子属性,发射器类声明以下四个属性:
    • 属性的平均初始(starting)值。
    • 属性值的随机范围。每次发射一个新的粒子,会在该范围内计算一个新的随机值。
    • 随时间的变化率,也被称为属性的速度。并非所有属性都有一个速度属性。
    • 一个可选的关键帧序列。
    清单6-6展示了你可能如何配置发射器的scale属性。这是节点的xScale和yScale属性的一个简化版本,并确定粒子相比它纹理的尺寸有多大。
    清单6-5   配置粒子的scale属性
    复制代码
    1. myEmitter.particleScale = 0.3;
    2. myEmitter.particleScaleRange = 0.2;
    3. myEmitter.particleScaleSpeed = -0.1;

    当创建一个新的粒子,其scale值是从0.2到0.4的一个随机数。然后scale值以每秒0.1的速度减少。所以,如果一个特定的粒子以平均值开始,即0.3,它会在3秒内从0.3减少到0。

    使用关键帧序列配置粒子属性的自定义坡道

    关键帧序列用来为粒子属性提供更复杂的行为。一个关键帧序列,使你可以指定粒子生命期的多个点,并在每个点为属性指定一个值。然后关键帧序列篡改(interpolate)这些点之间的值,并用它们来模拟粒子的属性值。
    你可以使用关键帧序列,实现了许多自定义的行为,包括:
    • 更改属性值,直到它达到某个指定值。
    • 在粒子的整个生命期中使用多个不同的属性值。例如,你可能会在序列中的一部分增加属性的值,而在另一部分减小属性的值。或者,在指定颜色时,你可以指定粒子在其生命期中循环显示多种颜色。
    • 使用一个非线性的曲线或分级(stepping)功能改变属性值。
    清单6-6展示你可以如何替换清单6-5中的代码来使用序列。当你使用一个序列,值不是随机化的。相反,序列指定所有的属性值。每个关键帧值包含一个值对象和时间戳。时间戳在0到1.0的范围内指定,其中0表示粒子的诞生而1.0表示它的死亡。因此,在该序列中,粒子以0.2的拉伸比例开始并在序列的四分之一时增加到0.7。到序列的四分之三时,达到它的最小尺寸0.1。它保持这个尺寸直到死亡。
    清单6-6   使用序列来改变粒子的尺度属性
    复制代码
    1. SKKeyframeSequence * scaleSequence = [[SKKeyframeSequence alloc] 
    2. initWithKeyframeValues:@[@0.2,@0.7,@0.1 times:@[@0.0,@0.250,@0.75];
    3. myEmitter.particleScaleSequence = scaleSequence;


    给粒子添加动作
    虽然你没有能力直接访问由Sprite Kit创建的粒子,但是你可以指定一个所有粒子都执行的动作。每当创建新的粒子,粒子发射器告诉该粒子执行动作。你使用动作创建的行为,甚至可以比序列所允许的更复杂。
    在粒子上使用动作的目的,是你可以把粒子看作是一个精灵。这意味着你可以执行其他有趣的技巧,如让粒子的纹理动起来。

    使用目标节点更改粒子的目的地

    当发射器创建粒子时,它们被渲染成发射节点的子节点。这意味着它们获得发射器节点的所有特性。所以,如果你旋转发射器节点,所有已产生的粒子的位置也会跟着旋转。根据你使用发射器所模拟的东西,这未必是正确的行为。例如,假设你要使用发射器节点来创建火箭的排气。当引擎在全速燃烧,一个锥形的火焰应该在飞船后面喷出来。这用粒子模拟是很容易的。但是,如果粒子是相对于船渲染的,船转弯时排气也会跟着旋转。那样看起来不对。你真正想要的是粒子产生后,就独立于发射器节点。当发射器节点旋转时,新的粒子有新的方向,而旧的粒子仍保持其原来的方向。你要用目标节点来实现它。
    清单6-7展示了如何使用目标节点来配置火箭的排气效果。当自定义精灵节点类实例化排气节点时,它使排气节点成为它本身的子节点。然而,它使粒子重定向到场景。
    清单6-7   使用目标节点来重定向产生粒子的地方
    复制代码
    1.  - (void)newExhaustNode
    2. {
    3. SKEmitterNode *emitter = [NSKeyedUnarchiver unarchiveObjectWithFile:
    4. [NSBundle mainBundle] pathForResource:@“exhaust” ofType:@“sks”];
    5. / /发射器放置在船的后部。
    6.    emitter.position = CGPointMake(0,-40);
    7.    emitter.name = @“exhaust”;
    8. / /发送粒子到场景。
    9.    emitter.targetNode = self.scene;
    10.    [self addChild:emitter];
    11. }

    当发射器有一个目标节点时,它计算粒子的位置、速度和方向,正如它是该精灵节点的子节点那样。这意味着,如果飞船精灵旋转,排气方向也会自动旋转。然而,一旦这些值计算好,它们被转换到目标节点的坐标系。此后,他们将只受场景节点的属性变化影响。

    粒子发射器提示

    Sprite Kit中的粒子发射器是构建可视化效果最有力的工具之一。但是,使用不当的话,粒子发射器可能会成为你的应用程序的设计和实施的瓶颈。考虑下面的提示:
    • 使用Xcode来创建和测试你的粒子效果,然后在你的游戏中加载归档。
    • 在你的游戏的代码里有节制地调整发射器的属性。通常情况下,你这样做是为了指定那些不能由Xcode inspector指定的属性,或者在你的游戏逻辑里控制属性。
    • 粒子比精灵节点代价低廉(cheaper),但他们仍然有开销!所以,你应该尽量保持屏幕上的粒子的数量降到最低。尽量以低出生率创建粒子效果,并在粒子一旦不可见时杀掉它们。例如,不是每秒创建数百或数千的粒子,而是降低粒子的出生率并稍微增加粒子的尺寸。通常,你可以用更少的粒子创建效果,但获得同样的净视觉外观(net visual appearance)。
    • 除非没有另一种解决方案时,才在粒子上使用动作。在单个(individual)粒子上执行动作可能会是非常昂贵的,特别是如果该粒子发射器还具有较高的出生率的话。
    • 每当粒子在产生后就应该独立于发射器节点时,给它们指定目标节点。这通常是发生在发射节点要在场景中移动或旋转的情况下。
    • 考虑当粒子发射器在屏幕上不可见时,把它从场景中移除。只在它变得可见前添加它。

    切割节点遮罩部分的场景

    SKCropNode对象不像精灵节点那样直接渲染内容。相反,它改变了它的子节点被渲染时的行为。切割节点允许你裁剪部分由子节点渲染的内容。这使得切割节点对于实现驾驶舱(cockpit)视图、控件和其他游戏的指示器、以及任何子节点不应该绘制在场景的一个特定区域之外的效果,是很有用的。图6-1简单地使用火箭飞船美术对另一个绘制在场景中的精灵应用遮罩(mask)。

    图6-1   切割节点进行遮罩操作
    裁剪区域通过遮罩指定。该遮罩不是一个固定的图像。它由一个节点渲染,就像Sprite Kit中的任何其他内容。这对简单的口罩和更复杂的行为都是允许的。例如,这里有一些可能你会用来指定一个遮罩的方法:
    • 无纹理精灵创建一个遮罩,该遮罩限制内容为场景的一个矩形部分。
    • 纹理感精灵是一个像素级精确的遮罩。但也要考虑一个非均匀缩放纹理的好处。这可以允许你创建可以调整尺寸的任意形状的对象。遮罩被调整尺寸和缩放以创建形状,然后动态内容在该遮罩内绘制。
    • 可以动态地生成一个复杂遮罩的节点的集合,该遮罩会在每次帧渲染时改变。
    清单6-8展示了遮罩的简单使用。它用应用程序bundle中的纹理加载遮罩图像。然后部分场景的内容被渲染,使用遮罩防止它过度绘制(overdrawing)屏幕中游戏用来显示控件的部分。
    清单6-8   创建切割节点
    复制代码
    1. SKCropNode * cropNode = [[SKCropNode alloc] init];
    2. myCropNode.position = CGPointMale(CGRectGetMidX(self.bounds),
    3.                                   CGRectGetMidY(self.bounds));
    4. cropNode.maskNode = [[SKSpriteNode alloc] initWithImageNamed:@“cockpitMask”];
    5. [cropNode addChild:gamePlayNode];
    6. [self addChild:cropNode];
    7. [self addChild:gameControlNodes];

    当切割节点在渲染时,遮罩在绘制其后代前先渲染。只与最终遮罩的alpha分量有关。遮罩中任何alpha值为0.05或更高的像素会呈现。其余的像素会被裁剪。

    效果节点对它们的后代应用特效

    SKEffectNode自身不绘制内容。相反,每次使用效果节点渲染新的帧时,效果节点执行一个特效传递给它内容。这个传递经过以下步骤:

    1. 效果节点执行一个单独的绘图传递(drawing pass)来渲染其子节点到一个私有帧缓冲区(private framebuffer)。
    2. 它应用Core Image效果到私有帧缓冲区。这个阶段是可选的。
    3. 然后它融合它的私有帧缓冲区的内容到它父节点的帧缓冲区,使用标准的精灵混合模式之一。
    4. 它丢弃其私人的framebuffer。
    图6-2展示了效果节点的一个可能的用法。在这个例子中,效果节点的子节点是两个作为灯光节点的精灵。它积累这些灯的效果,应用模糊滤镜来柔化产生的图像,然后使用复合混合模式(multiply blend mode)来应用这个照明到墙壁纹理上。
    图6-2   效果节点应用特效到节点的子节点
    这里是灯光效果如何产生的过程:
    1. 场景中包含两个不同的节点。第一个是表示地面的纹理精灵。第二个是应用灯光的效果节点。
    复制代码
    1. self.lightingNode = [[SKEffectNode alloc] init];

    2. 灯光是效果节点的子节点。每个都使用附加混合模式来渲染。
    复制代码
    1. SKSpriteNode *light = [SKSpriteNode spriteWithTexture:lightTexture];
    2. light.blendMode = SKBlendModeAdd;
    3. ...
    4. [self.lightingNode addChild:light];

    3. 应用滤镜来柔化灯光。
    如果你指定一个Core Image滤镜,它必须是一个接收单一的输入图像并生成单一的输出图像的滤镜。
    复制代码
    1. - (CIFilter *)blurFilter {     
    2. CIFilter *filter= [CIFilter filterWithName:@“CIBoxBlur”] // 3     
    3. [filter setDefaults];    
    4. [filter setValue:[NSNumber numberWithFloat:0] forKey:@“inputRadius”];     
    5. return flter; 
    6. }


    self.lightingNode.filter = [self blurFilter];
    4. 效果节点使用一个复合混合模式来应用照明效果。
    复制代码
    1. self.lightingNode.blendMode = SKBlendModeMultiply;


    场景是效果节点

    你已经学了很多关于SKScene类的东西,但你可能没有注意到,它是SKEffectNode的一个子类!这意味着,任何场景可以对内容应用滤镜。虽然应用滤镜花销可能会非常昂贵(不是所有滤镜都为交互效果精心设计),试验可以帮助你找到一些有趣的方式来使用滤镜。

    使用缓存来提高静态内容的性能

    效果节点通常渲染其内容作为绘制帧的一部分,然后丢弃它们。渲染内容是必要的,因为我们假设内容是每帧都改变的。但是,重新创建这些内容并应用Core Image滤镜的成本可能会非常高。如果内容是静态的,那么这是不必要的。保持渲染的帧缓冲区,而不是抛弃它,可能会更有意义。如果效果节点的内容是静态的,你可以把节点的shouldRasterize属性设置为YES。设置此属性将导致以下行为的改变:
    • 帧缓冲区在光栅化(rasterization)的末尾不会被丢弃。这也意味着效果节点正在使用更多的内存,而渲染可能需要稍长的时间。
    • 当一个新的帧被渲染时,帧缓冲区仅在效果节点的后代的内容已经改变后才会被渲染。
    • 更改Core Image滤镜的属性不再导致帧缓冲区的自动更新。你可以通过设置shouldRasterize的属性为NO强制它更新。
    展开全文
  • 使用kolla安装多节点OpenStack

    千次阅读 2018-02-02 17:24:11
    进行安装后在主机控制节点使用ifconfig,没有默认的三个网桥br-ex,br-int和br-tun,应该使用docker exec -it openvswitch_vswitchd /bin/bash进入到openvswitch容器(如果要退出就:Ctrl-D或exit),使用命令ovs-...

     

     

    前言:

    长久以来 OpenStack 部署难、 升级难的问题经常为人诟病,简单、便捷、高效的部署升级方案是所有 OpenStack 用户(客户、云服务提供商、开发者)的共性刚需。Kolla 正是应需而生,它基于社区的最佳实践,提出了可靠、可扩展的生产级别 OpenStack Service Containers 部署方式。

    简单来说,Kolla 就是充分应用容器特性,实现容器化部署 OpenStack 服务的 DevOps 工具。

    Kolla 显著的特点是「开箱即用」和「简易升级」,前者由编排工具(Ansible/Kubernetes)提供自动化支撑,后者则完全是 Container 的功劳。Kolla 追求为每一个 OpenStack Service 都构建相应的 Container,将升级/回滚的粒度(隔离依赖关系集)降维到 Service 或 Project 级别,实现升级/回滚的原子性。假若升级失败,则直接启动 Old Version Container 完成回滚。版本升级只需三步:

    1. Pull New Docker Image

    2. Stop Old Docker Container

    3. Start New Docker Container

    除此之外,Kolla 还提供了定制化部署拓扑的能力,允许用户花费更小的学习和试错成本,逐渐摸索演变出适合自己的部署架构蓝图。

    众所周知,容器技术具有非常优秀的应用部署敏捷性和效率,其中以 Docker 和 Kubernetes 作为构建容器化应用程序的主要标准,是最受欢迎的容器技术选型。Kolla 社区紧贴用户,将 Kolla Project 逐渐解耦成为了三个产品。由 Kolla 负责构建镜像,由 Kolla-ansible/Kolla-kubernetes 负责部署,而且 Kolla-kubernetes 还兼具着容器管理的能力。它们之间既互相配合又能自成一家,松耦合的架构更有利于最大限度的覆盖用户多方面需求。

    • Kolla:容器镜像构建

    • Kolla-ansible:容器部署

    • Kolla-kubernetes:容器部署,容器管理

    在 Queens Release,Kolla-ansible 开始支持「开发者模式」,这的确是一个令人兴奋的消息。

    支持开发模式。这个对 OpenStack 的开发者很是方便。以住,开发者可能要通过 devstack 搭建完整的 OpenStack 来开发,但是部署复杂,难度高。现在 kolla-ansible 已经支持了开发模式。通过配置要开发环境的 dev_mode, 如  horizon_dev_mode: true, 那么 horizon 容器内的代码会从物理机上挂载进去,开发者对代码修改后,就可以直接看到修改后的效果。十分方便。
     from:
     99Cloud 雷神(Kolla PTL)

    详细请参考:
    https://docs.openstack.org/kolla-ansible/latest/contributor/kolla-for-openstack-development.html

    虽然,现在开发模式支持的项目还比较有限,但社团贡献者已经提交了 BluePrint,相信很快就能支持大部分核心项目了。
    BP:https://review.openstack.org/#/c/560969/

    在本文中,我们以 Kolla & Kolla-ansible 的组合,介绍如何轻松的部署出一套 OpenStack 环境。


    本文所需要的镜像为陈沙克老师公司制作好的一个镜像文件,直接下载来使用

    云盘地址:https://pan.baidu.com/share/init?surl=kVkilGr 密码: gcty(已经不能使用,同时注意下载下来的文件是ocata_0727.iso,而不是ocata_0525.iso,如果用老版本ocata_0525.iso部署有些问题)
    按照这篇文章(http://blog.csdn.net/dylloveyou/article/details/77148560)中,部署了单节点的OpenStack环境,这次我们尝试部署一个多节点的环境(包括1个controller节点,1个compute节点,1个storage节点),之前的单节点因为已经安装了kolla-ansible和docker registry,我们把它当做部署节点。

    1. 环境准备

    新创建3台虚拟机,分别作为controller节点,compute节点,storage节点。其中controller节点3张网卡,compute、storage节点2张网卡。操作系统为centos7.4

    如果是物理机进行安装,可以采用U盘启动,在安装的时候可能出现不能安装的现象(如不能出现安装界面),进行如下的处理:

    在出现选择安装docker 或者kolla界面的时候,按tab键。

    修改系统引导命令行语句为:

    vmlinuz initrd=initrd.img dd linux quit

    说明:通过dd命令列出列出当前可用的设备信息,找到U盘的设备信息比如为/dev/sdb1

    再次重新启动按TAB键,修改修改系统引导命令行语句为:

    vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb1  ..........,需要根据不同的提示修改,还可以修改管理IP和主机名等。


    1)关闭Selinux和firewalld

    systemctl stop firewalld.service
    systemctl disable firewalld.service
    firewall-cmd --state
    sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
    sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config
    grep --color=auto '^SELINUX' /etc/selinux/config
    setenforce 0

    2)设置主机名,hosts文件(各个节点

    echo '

    192.168.5.111 control01
    192.168.5.211 controller
    192.168.5.212 compute
    192.168.5.213 storage
    '>> /etc/host
    3)storage节点加盘
    storage节点新加一块磁盘,作为cinder的lvm后端
    加完后重启系统,可以查看到新加的磁盘

    [root@storage ~]# fdisk -l
    创建pv、vg

    [root@storage ~]# pvcreate /dev/vdb
      Physical volume "/dev/sdb" successfully created.
    [root@storage ~]# vgcreate cinder-volumes /dev/vdb
      Volume group "cinder-volumes" successfully created
    修改配置
    vi /etc/lvm/lvm.conf
    修改 devices 下面的
    filter = [ "a/vda/", "a/vdb/", "r/.*/"]
    注意;需要根据自己实际调整
     重启lvm服务
    systemctl restart lvm2-lvmetad.service
    4)确认节点配置

    controller 3 张网卡
    compute 2 张网卡
    storage 2 张网卡(其实一张即可,因为不需要tunnel网络)
    storage 2 块硬盘

    2.安装docker和相关文件(各个节点执行)

    1)加入Docker的repo源

    # tee /etc/yum.repos.d/docker.repo << 'EOF'
    [dockerrepo]
    name=Docker Repository
    baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
    enabled=1
    gpgcheck=1
    gpgkey=https://yum.dockerproject.org/gpg
    EOF
    2)安装Docker 1.12.6
    注意:不要安装新版本,新版本后面检查不会通过
    yum install docker-engine-1.12.6 docker-engine-selinux-1.12.6 -y

    3)设置Docker
    mkdir /etc/systemd/system/docker.service.d
    tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'
    [Service]
    MountFlags=shared
    EOF

    4)编辑/usr/lib/systemd/system/docker.service文件

    ExecStart=/usr/bin/dockerd --insecure-registry 192.168.5.77:4000

    5)重启Docker服务
    systemctl enable docker
    systemctl daemon-reload
    systemctl restart docker

    6)安装 python-docker-py

    yum install python-docker-py

    3.配置免密登录

    部署节点和其他节点免密登陆

    [root@control01 ~]# ssh-keygen
    [root@control01 ~]# ssh-copy-id controller
    [root@control01 ~]# ssh-copy-id compute
    [root@control01 ~]# ssh-copy-id storage

    4.部署OpenStack

    1)停止部署节点容器

    因为部署节点之前已经部署了All in One的OpenStack,为了降低虚拟机的资源占用,先停止本节的的OpenStack相关容器。如果资源充足,可以不用停止

    [root@control01 ~]# cd /root/kolla-ansible-4.0.3.dev36/tools/
    [root@control01 tools]# . kolla-ansible stop

    查看只剩registry容器在运行

    [root@control01 tools]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    b18c5accabc2        registry            "/bin/registry serve "   3 months ago        Up 22 minutes       0.0.0.0:4000->5000/tcp   registry

    2)修改multinode文件

    [root@control01 ~]# cd /root/kolla-ansible-4.0.3.dev36/
    [root@control01 kolla-ansible-4.0.3.dev36]# cp ansible/inventory/* /home/
    [root@control01 ~]# cd /home
    [root@control01 home]# ls
    all-in-one  multinode
    [root@control01 home]# cp multinode mymultinode
    [root@control01 home]# vi mymultinode

    [control]
    controller  
    [network]
    controller
    [compute]
    compute
    [monitoring]
    controller
    [storage]
    storage
    ......

    里面的内容很好理解,表示一个控制节点 controller,网络节点也安装到控制节点,一个计算节点 compute ,一个存储节点 storage,后面的部分不用修改

    3)修改global和password配置文件

    [root@control01 ~]# cd /etc/kolla/
    [root@control01 kolla]# vi globals.yml

    kolla_internal_vip_address: "192.168.5.211"    外部访问地址,如果是非HA环境,是控制节点IP

    docker_registry: "192.168.5.111:4000"   镜像库,用部署节点的镜像库
    docker_namespace: "99cloud"                 

    network_interface: "eth0"   网络接口,默认就这一个接口,这里我们以eth0作为API网络                    
    api_interface: "{{ network_interface }}"   用的是eth0
    tunnel_interface: "eth1"                   eth1作为vxlan的承载网络
    neutron_external_interface: "eth2"          eth2作为外部网络

    enable_cinder: "yes"                启用cinder
    enable_cinder_backend_lvm: "yes"    cinder后端用lvm
    cinder_volume_group: "cinder-volumes"  

    enable_haproxy: "no"   不启用haproxy

    [root@control01 kolla]# vi passwords.yml
    keystone_admin_password: admin  admin用户登录密码
    4)部署前检查
    [root@control01 ~]# cd /root/kolla-ansible-4.0.3.dev36/tools/
    [root@control01 ~]# . kolla-ansible prechecks -i /home/mymultinode

    5)部署

    [root@control01 tools]# . kolla-ansible deploy -i /home/mymultinode

    开始部署,经过漫长的等待,部署完成,一般不会有什么问题,如果有问题,则需要根据报错及容器日志查找原因
    登录dashboard
    http://192.168.5.211  输入用户名admin 和密码admin
    登录系统,查看各个服务正常,表明部署成功。
    可以通过docker ps命令查看各个节点运行的容器

    5.在控制节点安装OpenStack 相关命令

    yum -y install gcc
    yum install python-devel.x86_64
    pip install --upgrade pip
    pip install -U python-openstackclient
    pip install -U python-neutronclient

    pip install python-glanceclient

    6  问题处理
    1)如果docker版本冲突,卸载原来的版本,重新进行安装
    yum list installed | grep docker
    根据查询结果卸载,如
    yum -y remove docker-ce.x86_64
    用上面命令,可能卸载不干净,使用以下的命令卸载,可能还是卸载不干净
    yum -y remove docker
    需要根据安装的过程提示进行卸载
    如:yum remove container-selinux-2.36-1.gitff95335.el7.noarch
    安装成功
    2) 使用命令行的时候的环境配置文件
    echo '
    export OS_PROJECT_DOMAIN_NAME=default
    export OS_USER_DOMAIN_NAME=default
    export OS_PROJECT_NAME=admin
    export OS_USERNAME=admin
    export OS_PASSWORD=admin
    export OS_AUTH_URL=http://controller:35357/v3
    export OS_IDENTITY_API_VERSION=3
    export OS_IMAGE_API_VERSION=2
    ' >> /root/admin-openstack.sh
    source admin-openstack.sh
    3) 日志文件的位置
    部署后openstack服务日志存放目录/var/lib/docker/volumes/kolla_logs/_data/
    4)docker 问题定位
        docker exec -it heka bash
        docker logs container-name

    5)镜像文件的位置经过如下的命令可以查找

    [root@control01 ~]# find / -name e200afd1-231b-4ed5-8c73-b361b71ee1a3
    /var/lib/docker/volumes/glance/_data/images/e200afd1-231b-4ed5-8c73-b361b71ee1a3

    在目录/var/lib/docker/volumes/glance/_data/images下。

    跟/etc/kolla/glance-api/glance-api.conf中的配置filesystem_store_datadir = /var/lib/glance/images/没有关系

    6)采用kolla安装的采用的是open vswitch,进行安装后在主机控制节点上使用ifconfig,没有默认的三个网桥br-ex,br-int和br-tun,应该使用docker exec -it openvswitch_vswitchd /bin/bash进入到openvswitch容器(如果要退出就:Ctrl-D或exit),使用命令ovs-vsctl show查看,可以看到上述的三个网桥。

    br-ext 连接外部网络的网桥

    br-int 集成网桥。所有instance的虚拟网卡和其他虚拟网络设备都将连接到该网桥

    br-tun 隧道网桥,基于隧道技术的VxLAN和GRE网络将使用该网桥进行通信

    注意:计算节点上没有br-ext

     

     

    可以使用如下的命令

    ovs-vsctl list-br 查看网桥

    ovs-vsctl list-ports br-ex  查看网桥上的端口

     

     

    可以看出集成网桥和br-ext和br-tun是相连的。

    当从从界面上添加网络并添加子网后,dhcp port的端口连接到了br-int,可以在容器里面看到port的类型为tap,在控制节点用ifconfig命令不能看见。每生成一个虚拟机在控制节点上(我的虚拟机在控制节点)多4个interface。第一个:tap interface命名为tapxxx;第二个 :linuxbridege,命名为qbrxxx;第三个:veph pair 命名为qvbxxx;第四个:veph pair 命名为qvoxxx。在openvswitch容器里面看增加了qvoxxx连接到了br-int上。上述连接保证了通信畅通。

     

    7 相关知识

    kolla部署流程
    规划:
    节点的规划和容器的分布由inventory控制,/usr/share/kolla/ansible/inventory目录下的all-in-one和multinode,如果你想单节点部署,你需要指定all-in-one,如果是多节点部署,你需要指定multinode。你可以根据实际需求修改all-in-one或multinode。
    配置:
    变量的配置
    关于部署的很多变量存放在/usr/share/kolla/ansible/group_vars/all.yml(这里面的变量有一部份与/etc/kolla/globals.yml里面的配置冲突,这些冲突的配置项以globals.yml里面的配置为准),使用这些变量值来替换playbook里面的对应的变量,控制playbook的最终结果。这些playbook主要分为4类default代表默认的一些配置,meta代表依赖于哪个playbook,task代表具体的部署任务,template代表模板,主要包含容器的配置文件,以及容器启动时的一些初始化操作,主要是拷贝配置文件和启动该容器对应的服务
    节点的配置
    各个角色节点安装好操作系统后,必须要安装docker以及添加配置,修改hostname,网卡配置,如果这里出现问题,下一步的检测会报错。值得注意的是,像将存储后端改成ceph,会对存储节点的磁盘进行些配置,但是检测貌似没有关于这方面的任务,如果采用kolla部署,肯定需要对检测的playbook进行完善。
    注:这些操作我是手动执行的,然而kolla在3.0.0及以上的版本提供了deploy-bifrost,deploy-servers两个命令行参数来分别启用一个bifrost的容器和通过bifrost来对节点进行自动化的配置。至于效果怎么样,我没试过。
    检测:
    kolla提供了一个检测命令,可以对各个角色节点进行一些检测,主要是包版本检测:docker-py,Ansible;端口检测:所有容器配置的监听端口是否已经被占用;服务检测:这里检测的就比较杂了,比如libvirt是否在运行,如果运行就会报错,比如Docker版本是否满足要求等等,你可以查看/usr/share/kolla/ansible/roles/prechecks/tasks下面的playbook,知道所有的检测项。当检测出错时,你就需要根据出错的信息,对某些角色的节点进行些修改配置。
    检测通过,下面的部署不一定成功,但检测没通过,下面的部署是肯定失败的。
    部署:
    如果上面的步骤没问题,只需执行kolla-ansible的相关命令就可以自动完成部署并启动相关容器以及容器里面对应的服务
    清理:
    在某些情况下,可能需要对环境中的容器,镜像,甚至节点上的所有关于kolla的配置,进行清理,可以使用kolla-ansible destory的子命令对环境清理
    扩展:
    kolla增加节点理论上很简单,只需要两步,一是修改对应的inventory,二是对待添加节点做好部署前的准备工作。由于资源的关系,并未做过相关的测试。
    kolla开发流程
    修改配置:
    修改某个容器:
    通过修改对应节点/etc/kolla/目录下对应的服务的配置文件,然后重启对应的容器,就可以修改相关配置
    修改多个容器:
    通过修改部署节点上/usr/share/kolla/ansible/roles相关目录下配置文件的模板和/etc/kolla/globals.yml,以及/usr/share/kolla/ansible/group_vars/all.yml,然后执行kolla-ansible的子命令reconfigure,可以修改相关容器的配置。
    注意:这种方式会将所有容器的配置重新覆盖一次,所有容器都会重启一次
    修改代码:
    1.基于改动的容器生成新的镜像:
    直接修改容器里面的代码,然后使用docker commit基于你改动的容器,重新制作一个镜像,指定一个合适的tag(即容器镜像的版本),最后上传到镜像仓库。
    缺点:由于docker分层存储的特性,每基于改动的容器进行一次commit,就会生成一层新的layer,layer无法删除,过多的layer会导致容器镜像的体积越来越庞大
    2.基于Dockerfile重新制作的镜像:
    由于采用源码的方式安装相关的第三方库,我们可以在git上维护相关的所有代码,在我们提交新的commit的时候,通过拉取新的源码,重新用Dockerfile制作镜像。一般来说Dockerfile都不需要变化。
    3.直接以root用户登录到容器修改代码:
    docker exec -u 0 -it <container_name> bash
    1
    注意:当移除旧的容器,如果简单的执行docker run的相关命令启动一个新的容器会出错,原因是启动容器时会做些初始化的操作,由于涉及到文件的拷贝,所以会出现缺少相关文件的报错。而启动容器以及容器的初始化的操作由kolla_toolbox来执行,具体的由kolla_toolbox里的/usr/local/bin/kolla_start 和 /usr/local/bin/kolla_set_configs来控制。至于如何以新的容器镜像成功的启动一个新的容器,还需要测试。
    环境升级:
    可以通过修改/etc/kolla/global.yml里面openstack-release的参数,然后执行kolla-ansible upgrade的子命令升级环境.
    注意:
    1.如果在虚拟环境(virt_type: qemu)升级libvirt,可能会失败.
    2.libvirt的升级还需要进一步验证。
    回滚:
    上游没有关于回滚的操作描述,不过回滚的流程跟升级差不多
    kolla上游bug统计
    Kolla 2.0.3
    Importance: 29 Critical,15 High,4 Medium,2 Low,15 Undecided
    Status: 7 New, 2 Incomplete, 9 Invalid, 4 Won’t Fix, 13 Confirmed, 2 Triaged, 2 In Progress, 14 Fix Committed, 12 Fix Released
    Kolla 3.0.2
    Importance: 11 Critical,16 High,2 Medium,24 Undecided
    Status: 6 New, 2 Incomplete, 3 Invalid, 5 Confirmed, 4 Triaged, 4 In Progress, 26 Fix Committed, 3 Fix Released
    附加
    1.docker容器的健康检测
    https://github.com/docker/docker/pull/23218/commits
    https://blog.newrelic.com/2016/08/24/docker-health-check-instruction/
    2.docker重新部署单个服务
    比如:当我们对一个容器的镜像进行修改后,需要替换掉旧的容器,由于容器只有一个,不可能因此重新更新整个环境。
    https://docs.docker.com/docker-cloud/apps/service-redeploy/





     

     

     

     

    展开全文
  • 配置节点

    2013-04-22 21:55:29
    当向负载平衡Pool 中添加Pool 成员时,可以显式创建一个节点,也可以 指示LTM 系统自动创建一个节点节点与Pool 成员之间的区别在于,节点仅由设备的IP 地址指定 (10.10.10.10),而Pool 成员则由IP
    • 节点介绍
    
    • 创建和修改节点
    • 配置节点设置
    • 管理节点
    节点介绍
    节点就是帮助BIG-IP®本地流量管理(LTM)系统传输流量的网络设备。
    当向负载平衡Pool 中添加Pool 成员时,可以显式创建一个节点,也可以
    指示LTM 系统自动创建一个节点。
    节点与Pool 成员之间的区别在于,节点仅由设备的IP 地址指定
    (10.10.10.10),而Pool 成员则由IP 地址和服务(如10.10.10:80)共
    同指定。
    节点的主要特性就是与状态Monitor 关联。与Pool 成员一样,节点能够
    与状态Monitor 关联,作为确定服务器状态的方式。然而,Pool 成员的状
    态Monitor 报告设备上运行的服务的状态,而与节点关联的状态Monitor
    则报告设备自身的状态。
    例如,如果ICMP 状态Monitor 与节点10.10.10.10(对应的Pool 成员
    10.10.10.10:80)关联,并且Monitor 报告节点处于Down 状态,那么
    Monitor 报告Pool 成员也处于Down 状态。相反,如果Monitor 报告节点
    处于Up 状态,那么Monitor 就会根据运行在其上的服务的状态,报告Pool
    成员处于Up 或Down 状态。
    您可以使用Configuration 工具创建节点,然后根据需要调整设置。使用
    相同的工具,您还可以显示节点信息,启用和禁用节点以及删除节点。
    创建和修改节点
    节点是创建负载平衡Pool 的基础。对于任何您希望成为负载平衡Pool
    一部分的服务器,都必须首先创建一个节点,即将该服务器指定为一个节
    点。在将服务器指定为节点后,就可以将该节点作为Pool 成员添加到pool
    中。此外,您也可以将状态Monitor 与节点关联起来,以报告该服务器的
    状态。有关将节点添加到负载平衡Pool 的详细信息,请参阅第4 章“配
    置负载平衡Pool”。
    您可以使用Configuration 工具创建节点。创建节点时,LTM 系统自动为
    该节点指定一组缺省设置。您可以保留或修改这些缺省设置。也可以在创
    建了节点之后修改这些设置。有关这些设置的详细信息,请参阅第3-3 页
    上的“配置节点设置”或在线帮助。
    了解LTM 系统将一些设置指定为基本设置、而将其它设置指定为高级设
    置是很有帮助的。如果您在创建节点时决定修改某些缺省设置,请务必在
    屏幕上选择高级选项,以查看全部可配置的设置。有关基本和高级设置的
    详细信息,请参阅第1 章“本地流量管理介绍”。
    创建节点
    1. 在Main 选项卡上,展开Local Traffic。
    2. 点击Nodes。
    将打开Node 屏幕。
    3. 在屏幕的右上角,点击Create。
    将打开New Node 屏幕。
    4. 对于Address 设置,输入节点的IP 地址。
    5. 指定、保留或修改其它任何设置。
    6. 点击Finished。
    修改现有节点
    1. 在Main 选项卡上,展开Local Traffic。
    2. 点击Nodes。
    将打开Node 屏幕。
    3. 在Address 栏中,点击一个地址。
    此操作显示该节点的设置。
    4. 保留或修改任何节点设置。
    5. 点击Update。
    配置节点设置
    您可以配置节点设置,以便根据具体需要定制节点。对于那些具有缺省值
    的设置,您可以保留或修改缺省设置。同样,您也可以在创建节点时或创
    建节点后随时修改这些设置。
    表3.1 列出了这些可配置的设置及其缺省值。该表的下面是具体设置说明。
    节点设置说明 缺省值
    Adress 指定节点的IP 地址。该设置是必需的。 无缺省值
    Name 指定节点的名称。 无缺省值
    Health Monitor 将状态或性能Monitor 与节点关联。 无缺省值
    Select Monitor 指定将LTM 系统与节点关联的Monitor。 无缺省值
    Availability
    Requirement
    指定满足以下条件的状态Monitor 的最小数量:这些
    Monitor 必须在LTM 系统报告节点处于开启状态之前,报
    告节点可用来接收流量。
    All
    Ratio 指定您希望分配到节点的比率权重。 1
    Connection
    Limit
    指定一个节点上允许的并发连接的最大数量。 0
    表3.1 节点配置设置
    在配置节点之前,说明您可能需要修改的特定节点设置是很有帮助的。
    指定节点的地址
    对于每个配置的节点,都必须指定一个IP地址。例如,节点IP地址为
    10.10.10.10。这是唯一必需的设置。
    指定节点名
    对于每个配置的节点,您都可以指定唯一的节点名,如Node_1。节点名
    要区分大小写,并且只能包含字母、数字和下划线(_)。不允许使用保
    留的关键字。
    指定Monitor关联
    利用LTM系统,您可以通过将状态或性能Monitor与这些节点关联,监视
    节点的性能状态。这类似于将Monitor与负载平衡Pool关联,只是在与节
    点关联的情况下,您监视的是IP地址;而在与pool关联的情况下,您监视
    的是在Pool成员上激活的服务。
    LTM系统包含许多不同的预先配置的Monitor。您可以根据要监视的流量
    类型,将这些Monitor与节点关联。您也可以创建自己的定制Monitor,并
    将它们与节点关联。唯一不能与节点关联的预先配置的Monitor,是那些
    专门为监视pool或Pool成员而非节点设计的Monitor。
    将Monitor与节点关联有两种方式:创建缺省Monitor关联,或者在创建节
    点时,将Monitor与每个节点进行显式关联。有关状态与性能Monitor的详
    细信息,请参阅第10章“配置Monitor”。
    创建缺省Monitor 关联
    您可以对LTM系统进行配置,以自动将一个或多个Monitor类型与您创建
    的每个节点关联。在这种情况下,您需要在创建节点前选择Monitor,然
    后在缺省模式下,LTM系统将这些Monitor与您创建的每个节点关联。这
    样就消除了必须将Monitor与您创建的每个节点进行显式关联的工作。
    通过导航到Nodes页面和使用缺省Monitor菜单,您可以为节点指定缺省
    Monitor。然后,当创建节点时,您可以将状态Monitor设置的值设为节点
    缺省。
    展开全文
  • 如何使用networkx绘制带节点坐标的模拟路网

    千次阅读 热门讨论 2018-06-05 22:29:53
    NetworkX是一个很强大的python网络处理工具包,内置了常用的图和复杂网络分析方法。一般网络处理不关心节点的坐标,因为网络分析通常只关心节点的连通关系和边的权值属性,一般并不涉及坐标值。但是在对路网进行模拟...
  • 对于一个openstack新手来说,自己使用命令行搭建一个openstack无疑是一个痛苦的过程,使用一个搭建工具将会使搭建过程变成的简单,下面就介绍一下我的一次成功的搭建过程。 第一步:安装虚拟机 我个人比较喜欢用...
  • 针对这种情况,可以在找到一个好的观测点后,设置一个viewpoint节点,这样下次就可以方便的观察了。 第一步:当然是建立一个模型了,此时视角位置如下。 第二步:调整模型,在得到想要的观测角度后,插入...
  • 来自 XAPI 或 Overpass API 请求的包装器,仅向节点提供转换后的输出(使用 osmconvert),输出可以是 osm 或 gpx 当您希望将 osm 数据库中绘制为多边形的餐厅或酒店转换为质心中的虚拟节点时,我会很有用。 (当...
  • 使用其他节点类型 虽然精灵是建立游戏时使用的最重要的元素,Sprite Kit还提供了许多其他的节点类。这些节点类中的大部分都提供可视化的内容,类似的SKSpriteNode类。剩下的则不直接绘制自己的内容,而是...
  • 具有快速构建、自配置、自调整拓扑、多跳路由、高密度、节点数可变、无统一地址、无线通信等特点,特别适用于大范围、偏远距离、危险环境等条件下的实时信息监测,可以广泛应用于军事、交通、环境监测和预报、卫生...
  • IEEE39节点系统,PSCAD模型,该模型由E-Tran工具基于PSS/E数据直接转化而来,模型排布由程序直接生成,大家可自行调整成常见的39节点系统的样子。模型需要加载库以及动态数据文件,详见readme文件。
  • 由于曲线的形状是由曲线上的节点及节 点上的控制点所决定的,因此通过移动节点和调节节点的控制点,可以改变曲线的形状。而几何图形(如矩形 、椭圆和多边形等)因其向量描述与曲线不同,只具有节点和线段,而没有控制...
  • 教学重点曲线的修改 教学难点节点修改和转换 教学目标学会曲线编辑和节点控制能修改一些曲线 教学方法演示法例举法 教学过程 在CorelDRAW 中曲线是构成矢量绘图的最基本的元素使用各种绘图工具绘制出各 种 曲线只是...
  • 在播放的时候鼠标上下左右移动,视口中画面也跟随移动,所以有些操作利用鼠标操作在此模式下会比较难处理,所以在创建使用鼠标的程序时,先把“用鼠标移动功能”关闭 在工具类选择Setting下的世界设置,在细节面板...
  • Labview 属性节点讲解

    万次阅读 2016-07-13 19:14:10
    属性节点 所属选板:应用程序控制VI和函数 必需:基础版开发系统 ...属性节点可自动调整为用户所引用的对象的类。LabVIEW的属性节点可访问XML属性、VISA属性、.NET属性和ActiveX属性。 详细信息 
  • Ubuntu下Ceph单节点和多节点安装小结

    万次阅读 2014-02-26 16:39:20
    Ubuntu下Ceph单节点和多节点安装小结 崔炳华 2014年2月26日 1 概述 Ceph是一个分布式文件系统,在维持POSIX兼容性的同时加入了复制和容错功能。Ceph最大的特点是分布式的元数据服务器,通过CRUSH(Controlled ...
  • Redis集群节点的变更

    千次阅读 2018-05-15 19:31:19
    Redis集群节点增加 添加的节点以主节点 和从节点 两种不同的节点类型加入集群。 若为主节点 ,需要创建一个空节点,然后将某些哈希槽移动到这个空节点中 若为从节点 ,需要创建一个空节点,然后将新节点设置为...
  • substance designer 分成两大类...Bitmap 位图 node 导入位图,或者新建位图配合绘图工具使用 Blend 混合 node 将两个输入按混合模式混合(可选蒙版)在一起 Blur 模糊 node 执行一个Box-blur,适用于小距离模糊 Channe
  • 集群的各个节点名词解释

    千次阅读 2018-09-09 15:30:27
    zookeeper:主从架构  leader:集群当中的主... 节点模型: 永久节点 临时节点 序列化节点 可以组合成四类节点 永久节点 临时节点 永久序列化节点 永久临时节点  临时节点:一旦客户端断开连接,临时节点消失  ...
  • 6.2.5 添加、删除节点 (1)使用工具箱中的 “手绘... 提示:如果读者需要删除节点可以通过以下几种: ①使用“形状”工具,选择节点并单击属性栏中的 “删除节点”按钮。 ②使用“形状”工具,双击曲线的上节点。 ...
  • MySQL集群节点参数说明

    千次阅读 2013-10-09 22:50:17
    下面列出的所有参数均能被忽略,如果是这样,将使用其默认值。注释:如果ExecuteOnComputer和HostName参数均未出现,会为它们指定默认值localhost。  [NDB_MGMD]Id:集群中的每个节点都有唯一的标识,由从1到63的...
  • Greenplum对新增节点扩展Segments实战

    千次阅读 2016-07-21 11:08:22
    一、环境信息:Greenplum版本号:Greenplum Version: 'postgres (GreenplumDatabase) 4.3.8.2 build 1' GP扩展Segment之前的环境信息:9个节点,其中:1个Master节点1个Standby Master节点7个Segment节点,每个...
  • 1. elementNode:使用getElementById()、getElementsByTagName()等方法,获取到的元素节点。 2. name:要想查询的元素节点的属性名字 6setAttribute()方法 setAttribute() 方法增加一个...
  • 目前提出的P2P网络节点的博弈模型大多没有考虑节点的类型,没有考虑重复博弈所产生的和一次博弈不同的结果.针对这些问题,根据节点的推荐信任值来对节点进行分类,并分析...使用博弈论仿真工具Gambit验证了该模型的有效性.
  • 我们首先看obj类有什么节点: 右下方节点操作栏:右键或tab键创建节点可以键入节点名称快速定位。基础类节点: Geometry>Geometry 模型类节点 Dynamic>DOP Network 物理类节点 Manager>CHOP ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 152,234
精华内容 60,893
关键字:

使用什么工具可以调整节点