-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch.xml
438 lines (333 loc) · 61.3 KB
/
search.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>Ubuntu18.04基础环境配置</title>
<url>/2020/7177/</url>
<content><![CDATA[<h3 id="1-设置静态ip与DNS"><a href="#1-设置静态ip与DNS" class="headerlink" title="1. 设置静态ip与DNS"></a>1. 设置静态ip与DNS</h3><ul>
<li><p>修改/etc/network/interfaces设置静态ip</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> gedit /etc/network/interfaces</span></span><br></pre></td></tr></table></figure>
</li>
</ul>
<a id="more"></a>
<p> 修改如下:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> interfaces(5) file used by ifup(8) and ifdown(8)</span></span><br><span class="line">auto lo</span><br><span class="line">iface lo inet loopback</span><br><span class="line">auto enp5s0 # 网卡的名称要根据实际设置,有可能是enp1s0</span><br><span class="line">iface enp5s0 inet static</span><br><span class="line">address 172.16.62.237 # 根据实际需要设置231-239</span><br><span class="line">netmask 255.255.255.0</span><br><span class="line">gateway 172.16.62.254</span><br></pre></td></tr></table></figure>
<p> 重启网络服务:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> service networking restart</span></span><br></pre></td></tr></table></figure>
<ul>
<li>修改/etc/systemd/resolved.conf设置NDS</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> gedit /etc/systemd/resolved.conf</span></span><br></pre></td></tr></table></figure>
<p> 修改如下:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">[Resolve]</span><br><span class="line">DNS=114.114.114.114</span><br></pre></td></tr></table></figure>
<p> 重启DNS服务:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> service systemd-resolved restart</span></span><br></pre></td></tr></table></figure>
<ul>
<li>3 设置hosts与hostname,并重启</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> gedit /etc/hosts</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> gedit /etc/hostname</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> reboot</span></span><br></pre></td></tr></table></figure>
<h4 id="2-更换国内apt源,并更新软件"><a href="#2-更换国内apt源,并更新软件" class="headerlink" title="2. 更换国内apt源,并更新软件"></a>2. 更换国内apt源,并更新软件</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> cp /etc/apt/sources.list /etc/apt/sources.list.backup</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> vi /etc/apt/sources.list</span></span><br></pre></td></tr></table></figure>
<p> 阿里云源 <a href="https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11nkzu7o">https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11nkzu7o</a></p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse</span><br><span class="line"></span><br><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse</span><br><span class="line"></span><br><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse</span><br><span class="line"></span><br><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse</span><br><span class="line"></span><br><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get update</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> apt-get upgrade</span></span><br></pre></td></tr></table></figure>
<h4 id="3、安装基础软件"><a href="#3、安装基础软件" class="headerlink" title="3、安装基础软件"></a>3、安装基础软件</h4><ul>
<li> vi不能正常使用上下左右方向键,卸载后重新安装vi/vim</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get remove vim-common</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y vim</span></span><br></pre></td></tr></table></figure>
<ul>
<li>安装ip、ifconfig、ping、traceroute</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y iproute2 net-tools iputils-ping traceroute</span></span><br></pre></td></tr></table></figure>
<ul>
<li>安装pip2、pip3,并更换国内源**</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y python-pip python3-pip</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> mkdir ~/.pip</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> vim ~/.pip/pip.conf</span></span><br><span class="line"></span><br><span class="line">[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple extra-index-url = https://mirrors.163.com/pypi/simple/ timeout = 60 </span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> ln -s /usr/bin/pip2 /usr/bin/pip2.7</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> ln -s /usr/bin/pip3 /usr/bin/pip3.6</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> rm -f /usr/bin/pip</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> ln -s /usr/bin/pip3 /usr/bin/pip</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> rm -f /usr/bin/python</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> ln -s /usr/bin/python3 /usr/bin/python</span></span><br></pre></td></tr></table></figure>
<ul>
<li>安装文件上传下载工具lrzsz、同步工具rsync</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y lrzsz rsync</span></span><br></pre></td></tr></table></figure>
<ul>
<li>安装ssh-server,并配置</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y openssh-server</span></span><br></pre></td></tr></table></figure>
<p>检查ssh-server是否启动:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> ps -aux | grep sshd</span></span><br></pre></td></tr></table></figure>
<p>若未出现sshd结果,则执行:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> service ssh start</span></span><br></pre></td></tr></table></figure>
<ul>
<li>安装发包工具、流量统计工具netperf、iperf、iftop、vnstat</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y netperf iperf iftop vnstat</span></span><br></pre></td></tr></table></figure>
<ul>
<li>安装docker</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y docker.io</span></span><br></pre></td></tr></table></figure>
]]></content>
<categories>
<category>Linux</category>
</categories>
<tags>
<tag>OVS</tag>
</tags>
</entry>
<entry>
<title>git rebase 命令</title>
<url>/2020/46552/</url>
<content><![CDATA[<p>在项目的协同开发过程中,可能会产生很多的commit记录,使用git rebase能够将分叉的分支重新合并,使项目中的提交历史变得干净整洁。</p>
<a id="more"></a>
<p>假如你和A同学在同一个分支upstream/master上进行开发,当你修改了代码准备push到远端是发现失败了,原因是因为A同学已经先进行了提交,导致本地分支的提交历史已经落后于远端。需要使用git pull功能与远端同步一下,才能成功push上去。</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> git pull upstream master</span></span><br><span class="line"></span><br><span class="line"><span class="meta">$</span><span class="bash"> git push upstream master</span></span><br></pre></td></tr></table></figure>
<p>但此时通过git log查看提交历史,会发现分叉了,同时在你的PR记录里会出现A同学之前的commit记录。</p>
<p>如果不想看到分叉与过多的commit记录,可以使用<code>git rebase</code>解决。</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> git rebase upstream master</span></span><br></pre></td></tr></table></figure>
<p>现在push到远端</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> git push upstream master</span></span><br></pre></td></tr></table></figure>
<p>再次查看提交历史,不会出现分叉,且只会有一个commit。</p>
<p>在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决冲突;rebase 和 merge的另一个区别是rebase 的冲突是一个一个解决,如果有多个冲突,先解决第一个,然后用命令</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> git add -u</span></span><br><span class="line"><span class="meta">$</span><span class="bash"> git rebase --<span class="built_in">continue</span></span></span><br></pre></td></tr></table></figure>
<p>继续后才会出现第二个冲突,直到所有冲突解决完,而merge 是所有的冲突都会显示出来。<br>另外如果rebase过程中,你想中途退出,恢复rebase前的代码则可以用命令 </p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">$</span><span class="bash"> git rebase --abort</span></span><br></pre></td></tr></table></figure>
<p>git merge 操作合并分支会让两个分支的每一次提交都按照提交时间(并不是push时间)排序,并且会将两个分支的最新一次commit点进行合并成一个新的commit,最终的分支树呈现非整条线性直线的形式</p>
<p>git rebase操作实际上是将当前执行rebase分支的所有基于原分支提交点之后的commit打散成一个一个的patch,并重新生成一个新的commit hash值,再次基于原分支目前最新的commit点上进行提交,并不根据两个分支上实际的每次提交的时间点排序,rebase完成后,切到基分支进行合并另一个分支时也不会生成一个新的commit点,可以保持整个分支树的完美线性</p>
<p>当我们协同开发一个功能时,可能会在本地有无数次commit,而你实际上在你的master分支上只想显示每一个功能测试完成后的一次完整提交记录就好了,其他的提交记录并不想将来全部保留在你的master分支上,那么rebase将会是一个好的选择,他可以在rebase时将本地多次的commit合并成一个commit,还可以修改commit的描述等。</p>
<p>参考链接:<a href="https://www.jianshu.com/p/6960811ac89c">https://www.jianshu.com/p/6960811ac89c</a></p>
]]></content>
<tags>
<tag>git</tag>
</tags>
</entry>
<entry>
<title>GDB调试段错误</title>
<url>/2020/6330/</url>
<content><![CDATA[<h4 id="GDB"><a href="#GDB" class="headerlink" title="GDB"></a>GDB</h4><p>GDB 全称“GNU symbolic debugger”,从名称上不难看出,它诞生于 GNU 计划(同时诞生的还有 GCC、Emacs 等),是 Linux 下常用的程序调试器。发展至今,GDB 已经迭代了诸多个版本,当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序。</p>
<a id="more"></a>
<p>总的来说,借助 GDB 调试器可以实现以下几个功能:</p>
<ol>
<li>程序启动时,可以按照我们自定义的要求运行程序,例如设置参数和环境变量;</li>
<li>可使被调试程序在指定代码处暂停运行,并查看当前程序的运行状态(例如当前变量的值,函数的执行结果等),即支持断点调试;</li>
<li>程序执行过程中,可以改变某个变量的值,还可以改变代码的执行顺序,从而尝试修改程序中出现的逻辑错误。</li>
</ol>
<p>判断当前 Linux 发行版是否安装有 GDB 的方法也很简单,就是在命令行窗口中执行 gdb -v 命令。如果显示以下信息,则说明该系统以及安装了GDB。</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">[root@bogon ~]# gdb -v</span><br><span class="line">GNU gdb (GDB) Red Hat Enterprise Linux (7.2-92.el6)</span><br><span class="line">Copyright (C) 2010 Free Software Foundation, Inc.</span><br><span class="line">.......</span><br></pre></td></tr></table></figure>
<p>参考链接:<a href="http://c.biancheng.net/view/8123.html">http://c.biancheng.net/view/8123.html</a></p>
<h4 id="段错误"><a href="#段错误" class="headerlink" title="段错误"></a>段错误</h4><p>一旦一个程序发生了越界访问,CPU就会产生相应的保护,于是segmentation fault就出现了。通俗来讲,段错误应该就是访问了不可访问的内存,这个内存区要么是不存在的,要么是受到系统保护的,还有可能是缺少文件或者文件损坏。</p>
<p>在编程中以下几类做法容易导致段错误,基本上是错误地使用<a href="https://baike.baidu.com/item/%E6%8C%87%E9%92%88">指针</a>引起的。</p>
<ol>
<li><p>访问系统数据区,尤其是往系统保护的内存地址写数据最常见就是给一个指针以0地址。</p>
</li>
<li><p>内存越界(数组越界,变量类型不一致等): 访问到不属于你的内存区域。</p>
</li>
</ol>
<h4 id="示例"><a href="#示例" class="headerlink" title="示例"></a>示例</h4><p>在我们的案例中,程序通过make编译了一个可执行文件tests。</p>
<p>运行:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> gdb ./<span class="built_in">test</span></span></span><br></pre></td></tr></table></figure>
<p>得到如下显示:</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git</span><br><span class="line">Copyright (C) 2018 Free Software Foundation, Inc.</span><br><span class="line">License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html></span><br><span class="line">This is free software: you are free to change and redistribute it.</span><br><span class="line">There is NO WARRANTY, to the extent permitted by law. Type "show copying"</span><br><span class="line">and "show warranty" for details.</span><br><span class="line">This GDB was configured as "x86_64-linux-gnu".</span><br><span class="line">Type "show configuration" for configuration details.</span><br><span class="line">For bug reporting instructions, please see:</span><br><span class="line"><http://www.gnu.org/software/gdb/bugs/>.</span><br><span class="line">---Type <return> to continue, or q <return> to quit---</span><br></pre></td></tr></table></figure>
<p>输入crtl,继续输入</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">(gdb) r</span><br></pre></td></tr></table></figure>
<p>程序会继续执行,直到发生段错误,无需打断点,并显示类似如下错误信息</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">Thread 1 "tests" received signal SIGSEGV, Segmentation fault.</span><br><span class="line">0x00007ffff6216cf1 in __GI___libc_free (mem=0x5555557bd066 <aca_oam_server::ACA_Oam_Server::_parse_oam_none(unsigned int, aca_oam_server::oam_message*)>) at malloc.c:3133</span><br><span class="line">3133 malloc.c: No such file or directory.</span><br></pre></td></tr></table></figure>
<p>从以上信息可以看到,发生段错误的位置大概在aca_oam_server::ACA_Oam_Server::_parse_oam_none这个方法。</p>
<p>我们继续输入</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">(gdb) backtrace</span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash">0 0x00007ffff6216cf1 <span class="keyword">in</span> __GI___libc_free (mem=0x5555557bd066 <aca_oam_server::ACA_Oam_Server::_parse_oam_none(unsigned int, aca_oam_server::oam_message*)>) at malloc.c:3133</span></span><br><span class="line"><span class="meta">#</span><span class="bash">1 0x00005555557a419a <span class="keyword">in</span> __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::deallocate (this=0x7fffffffe2df,</span> </span><br><span class="line"> __p=0x5555557bd066 <aca_oam_server::ACA_Oam_Server::_parse_oam_none(unsigned int, aca_oam_server::oam_message*)>) at /usr/include/c++/7/ext/new_allocator.h:125</span><br><span class="line"><span class="meta">#</span><span class="bash">2 0x00005555557a1bcc <span class="keyword">in</span> std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::deallocate (__a=...,</span> </span><br><span class="line"> __p=0x5555557bd066 <aca_oam_server::ACA_Oam_Server::_parse_oam_none(unsigned int, aca_oam_server::oam_message*)>, __n=0) at /usr/include/c++/7/bits/alloc_traits.h:462</span><br><span class="line"><span class="meta">#</span><span class="bash">3 0x00005555557bea0b <span class="keyword">in</span> std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<unsigned int, <span class="literal">false</span>> > >::_M_deallocate_buckets (</span></span><br><span class="line"> this=0x555555ba9c50 <aca_oam_server::ACA_Oam_Server::get_instance()::instance+48>, __bkts=0x5555557bd066 <aca_oam_server::ACA_Oam_Server::_parse_oam_none(unsigned int, aca_oam_server::oam_message*)>, __n=0)</span><br><span class="line"> at /usr/include/c++/7/bits/hashtable_policy.h:2121</span><br><span class="line"><span class="meta">#</span><span class="bash">4 0x00005555557be636 <span class="keyword">in</span> std::_Hashtable<unsigned int, unsigned int, std::allocator<unsigned int>, std::__detail::_Identity, std::equal_to<unsigned int>, std::<span class="built_in">hash</span><unsigned int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<<span class="literal">false</span>, <span class="literal">true</span>, <span class="literal">true</span>> >::_M_deallocate_buckets (</span></span><br></pre></td></tr></table></figure>
<p>通过运行 (gdb) frame 序号可以查看更具体的信息</p>
<p>如:</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">(gdb) frame 0</span><br><span class="line">#0 0x00007ffff6216cf1 in __GI___libc_free (mem=0x5555557bd066 <aca_oam_server::ACA_Oam_Server::_parse_oam_none(unsigned int, aca_oam_server::oam_message*)>) at malloc.c:3133</span><br><span class="line">3133 in malloc.c</span><br></pre></td></tr></table></figure>
<p>我们检查代码,发现声明了一个函数数组</p>
<figure class="highlight c++"><table><tr><td class="code"><pre><span class="line"><span class="keyword">void</span> (aca_oam_server::ACA_Oam_Server ::*_parse_oam_msg_ops[<span class="number">3</span>])(<span class="keyword">uint32_t</span> udp_dpost,oam_message *oammsg);</span><br></pre></td></tr></table></figure>
<p>但在赋值时发生了</p>
<figure class="highlight c++"><table><tr><td class="code"><pre><span class="line">_parse_oam_msg_ops[<span class="number">3</span>] = &aca_oam_server::ACA_Oam_Server::_parse_oam_none;</span><br></pre></td></tr></table></figure>
<p>数组下标越界,导致发生了段错误。</p>
]]></content>
<tags>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>DevStack(Stein版)安装说明</title>
<url>/2020/63670/</url>
<content><![CDATA[<h3 id="1-修改apt源"><a href="#1-修改apt源" class="headerlink" title="1. 修改apt源"></a>1. 修改apt源</h3><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> cp /etc/apt/sources.list /etc/apt/sources.list.backup</span></span><br></pre></td></tr></table></figure>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> vim /etc/apt/sources.list</span></span><br></pre></td></tr></table></figure>
<a id="more"></a>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse</span><br><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse</span><br><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse</span><br><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse</span><br><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse</span><br></pre></td></tr></table></figure>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get update</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> apt-get upgrade</span></span><br></pre></td></tr></table></figure>
<h3 id="2-配置pip源与Python"><a href="#2-配置pip源与Python" class="headerlink" title="2. 配置pip源与Python"></a>2. 配置pip源与Python</h3><p>(1)配置pip国内源</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> mkdir ~/.pip</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> vim ~/.pip/pip.conf</span></span><br><span class="line"></span><br><span class="line">[global]</span><br><span class="line">index-url = https://pypi.tuna.tsinghua.edu.cn/simple</span><br><span class="line">extra-index-url = https://mirrors.163.com/pypi/simple/</span><br><span class="line"></span><br><span class="line">timeout = 60</span><br></pre></td></tr></table></figure>
<p>(2)配置pip默认为pip3,Python默认为Python3</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> ln -s /usr/bin/pip2 /usr/bin/pip2.7</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> ln -s /usr/bin/pip3 /usr/bin/pip3.6</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> rm -f /usr/bin/pip</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> ln -s /usr/bin/pip3 /usr/bin/pip</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> rm -f /usr/bin/python</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> ln -s /usr/bin/python3 /usr/bin/python</span></span><br></pre></td></tr></table></figure>
<h3 id="3-准备devstack安装"><a href="#3-准备devstack安装" class="headerlink" title="3. 准备devstack安装"></a>3. 准备devstack安装</h3><h4 id="(1)clone-devstack代码(Stein版)"><a href="#(1)clone-devstack代码(Stein版)" class="headerlink" title="(1)clone devstack代码(Stein版)"></a>(1)clone devstack代码(Stein版)</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> git <span class="built_in">clone</span> http://git.trystack.cn/openstack-dev/devstack -b stable/stein</span></span><br></pre></td></tr></table></figure>
<h4 id="(2)创建stack账户"><a href="#(2)创建stack账户" class="headerlink" title="(2)创建stack账户"></a>(2)创建stack账户</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> devstack/tools/create-stack-user.sh</span></span><br></pre></td></tr></table></figure>
<h4 id="(3)移动代码(同后续安装目标目录放在一起)"><a href="#(3)移动代码(同后续安装目标目录放在一起)" class="headerlink" title="(3)移动代码(同后续安装目标目录放在一起)"></a>(3)移动代码(同后续安装目标目录放在一起)</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> mv devstack /opt/stack</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> chown -R stack:stack /opt/stack/devstack</span></span><br></pre></td></tr></table></figure>
<h4 id="(4)切换到-stack-用户"><a href="#(4)切换到-stack-用户" class="headerlink" title="(4)切换到 stack 用户"></a>(4)切换到 stack 用户</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> su - stack</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> <span class="built_in">cd</span> devstack</span></span><br></pre></td></tr></table></figure>
<h4 id="(5)对于stack账户的pip,再次执行步骤2"><a href="#(5)对于stack账户的pip,再次执行步骤2" class="headerlink" title="(5)对于stack账户的pip,再次执行步骤2"></a>(5)对于stack账户的pip,再次执行步骤2</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> mkdir ~/.pip</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> vim ~/.pip/pip.conf</span></span><br><span class="line"></span><br><span class="line">[global]</span><br><span class="line">index-url = https://pypi.tuna.tsinghua.edu.cn/simple</span><br><span class="line">extra-index-url = https://mirrors.163.com/pypi/simple/</span><br><span class="line"></span><br><span class="line">timeout = 60</span><br></pre></td></tr></table></figure>
<h3 id="4-控制节点安装"><a href="#4-控制节点安装" class="headerlink" title="4. 控制节点安装"></a>4. 控制节点安装</h3><h4 id="4-1-安装控制节点,编辑local-conf"><a href="#4-1-安装控制节点,编辑local-conf" class="headerlink" title="4. 1 安装控制节点,编辑local.conf"></a>4. 1 安装控制节点,编辑local.conf</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">stack@controller:~/devstack$ vim local.conf</span><br></pre></td></tr></table></figure>
<p>控制节点(ip与网卡名根据实际设置)</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">[[local|localrc]]</span><br><span class="line"><span class="meta">#</span><span class="bash">---------------common section even some node role may not use this setting</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> use TryStack git mirror</span></span><br><span class="line"></span><br><span class="line">GIT_BASE=http://git.trystack.cn</span><br><span class="line">NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git</span><br><span class="line">SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git</span><br><span class="line"><span class="meta">#</span><span class="bash">LIBVIRT_TYPE=kvm</span></span><br><span class="line"></span><br><span class="line">DEST=/opt/stack</span><br><span class="line">LOGFILE=$DEST/logs/stack.sh.log</span><br><span class="line">VERBOSE=True</span><br><span class="line">LOGDAYS=1</span><br><span class="line">LOG_COLOR=True</span><br><span class="line">RECLONE=false</span><br><span class="line">PIP_UPGRADE=Flase</span><br><span class="line">DOWNLOAD_DEFAULT_IMAGES=False</span><br><span class="line">IMAGE_URLS="http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img"</span><br><span class="line">IP_VERSION=4</span><br><span class="line">SERVICE_IP_VERSION=4</span><br><span class="line">ENABLE_IDENTITY_V2=False</span><br><span class="line"></span><br><span class="line">DATABASE_TYPE=mysql</span><br><span class="line"></span><br><span class="line">SERVICE_HOST=控制节点的ip地址</span><br><span class="line">MYSQL_HOST=$SERVICE_HOST</span><br><span class="line">RABBIT_HOST=$SERVICE_HOST</span><br><span class="line">GLANCE_HOSTPORT=$SERVICE_HOST:9292</span><br><span class="line">ADMIN_PASSWORD=admin</span><br><span class="line">MYSQL_PASSWORD=admin</span><br><span class="line">RABBIT_PASSWORD=admin</span><br><span class="line">SERVICE_PASSWORD=admin</span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> Neutron options</span></span><br><span class="line"></span><br><span class="line">NEUTRON_CREATE_INITIAL_NETWORKS=False</span><br><span class="line"></span><br><span class="line">MULTI_HOST=1</span><br><span class="line"></span><br><span class="line">USE_PYTHON3=True</span><br><span class="line"></span><br><span class="line">enable_service placement-api </span><br><span class="line">enable_service placement-client</span><br><span class="line">disable_service etcd3 </span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash">---------------node special section</span></span><br><span class="line">HOST_IP=控制节点的ip地址</span><br><span class="line">FLAT_INTERFACE=enp5s0(网卡名)</span><br><span class="line"><span class="meta">#</span><span class="bash">RECLONE=True</span></span><br><span class="line"><span class="meta">#</span><span class="bash">enable_plugin octavia https://opendev.org/openstack/octavia stable/stein</span></span><br><span class="line"><span class="meta">#</span><span class="bash">enable_plugin octavia http://git.trystack.cn/openstack/octavia stable/stein</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash">disable_service n-cpu q-agt n-api-meta c-vol n-net</span></span><br><span class="line">disable_service n-cpu c-vol</span><br><span class="line">enable_service q-fwaas,q-vpn</span><br><span class="line">enable_service q-lbaasv2,octavia,o-cw,o-hk,o-hm,o-api</span><br></pre></td></tr></table></figure>
<h4 id="4-2-控制节点上,修改脚本"><a href="#4-2-控制节点上,修改脚本" class="headerlink" title="4. 2 控制节点上,修改脚本"></a>4. 2 控制节点上,修改脚本</h4><h5 id="(1)修改tools-install-pip-sh"><a href="#(1)修改tools-install-pip-sh" class="headerlink" title="(1)修改tools/install_pip.sh"></a>(1)修改tools/install_pip.sh</h5><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> vim /opt/stack/devstack/tools/install_pip.sh</span></span><br></pre></td></tr></table></figure>
<p>注释掉135-140行</p>
<h5 id="(2)修改lib-apache"><a href="#(2)修改lib-apache" class="headerlink" title="(2)修改lib/apache"></a>(2)修改lib/apache</h5><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> vim /opt/stack/devstack/lib/apache</span></span><br></pre></td></tr></table></figure>
<p>第98行改为 </p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">uwsgi=$(ls uWSGI*)</span><br></pre></td></tr></table></figure>
<p>第99行改为 </p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> mkdir uwsgi & tar xvf <span class="variable">$uwsgi</span> -C uwsgi</span></span><br></pre></td></tr></table></figure>
<h5 id="(3)修改lib-tempest"><a href="#(3)修改lib-tempest" class="headerlink" title="(3)修改lib/tempest"></a>(3)修改lib/tempest</h5><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> vim /opt/stack/devstack/lib/tempest</span></span><br></pre></td></tr></table></figure>
<p>第110行改为python3的写法:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">echo $size | python -c "import math; print(int(math.ceil(float(int(input()) / 1024.0 ** 3))))"</span><br></pre></td></tr></table></figure>
<h4 id="4-3-控制节点上,执行denstack安装脚本"><a href="#4-3-控制节点上,执行denstack安装脚本" class="headerlink" title="4. 3 控制节点上,执行denstack安装脚本"></a>4. 3 控制节点上,执行denstack安装脚本</h4><figure class="highlight plain"><table><tr><td class="code"><pre><span class="line"># FORCE=yes ./stack.sh</span><br></pre></td></tr></table></figure>
<h4 id="4-4、控制节点上,报错后的一些操作"><a href="#4-4、控制节点上,报错后的一些操作" class="headerlink" title="4. 4、控制节点上,报错后的一些操作"></a>4. 4、控制节点上,报错后的一些操作</h4><p> 每次报错后都要先执行 ./unstack.sh<br> 再执行步骤4-3</p>
<h5 id="(1)如果os-testr-1-0-0安装卡住,则可以人工安装os-testr-2-0-0"><a href="#(1)如果os-testr-1-0-0安装卡住,则可以人工安装os-testr-2-0-0" class="headerlink" title="(1)如果os-testr===1.0.0安装卡住,则可以人工安装os-testr===2.0.0"></a>(1)如果os-testr===1.0.0安装卡住,则可以人工安装os-testr===2.0.0</h5><figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">#pip install os-testr==2.0.0</span><br></pre></td></tr></table></figure>
<p>若无法解决,就直接改upper-constraints.txt文件</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line"># vim /opt/stack/requirements/upper-constraints.txt</span><br></pre></td></tr></table></figure>
<p>第438行改为 os-testr===2.0.0</p>
<h5 id="(2)nova-py文件报错,novaclient-v2库中没有list-extensions函数,"><a href="#(2)nova-py文件报错,novaclient-v2库中没有list-extensions函数," class="headerlink" title="(2)nova.py文件报错,novaclient.v2库中没有list_extensions函数,"></a>(2)nova.py文件报错,novaclient.v2库中没有list_extensions函数,</h5><p>修改horizon/openstack_dashboard/api/nova.py</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> rm /opt/stack/horizon/openstack_dashboard/api/nova.py</span></span><br></pre></td></tr></table></figure>
<p>将上述nova.py文件替换为下面网址里的文件<br><a href="https://opendev.org/openstack/horizon/src/commit/b148c9207580731863e4dc49771e132a8c31edbc/openstack_dashboard/api/nova.py">https://opendev.org/openstack/horizon/src/commit/b148c9207580731863e4dc49771e132a8c31edbc/openstack_dashboard/api/nova.py</a><br>也可以用wget直接下载,下载链接如下:<br><a href="https://opendev.org/openstack/horizon/raw/commit/b148c9207580731863e4dc49771e132a8c31edbc/openstack_dashboard/api/nova.py">https://opendev.org/openstack/horizon/raw/commit/b148c9207580731863e4dc49771e132a8c31edbc/openstack_dashboard/api/nova.py</a></p>
<h5 id="(3)oslo-privsep-daemon-FailedToDropPrivileges-privsep-helper-command-exited-non-zero"><a href="#(3)oslo-privsep-daemon-FailedToDropPrivileges-privsep-helper-command-exited-non-zero" class="headerlink" title="(3)oslo_privsep.daemon.FailedToDropPrivileges: privsep helper command exited non-zero"></a>(3)oslo_privsep.daemon.FailedToDropPrivileges: privsep helper command exited non-zero</h5><p>修改/usr/local/bin/privsep-helper</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line"># vim /usr/local/bin/privsep-helper</span><br></pre></td></tr></table></figure>
<p>sys.exit(helper_main()) 改为 sys.exit(0)</p>
<h5 id="(4)如果cirros-0-4-0-x86-64-disk-img下载卡住,可以浏览器下载,再放入对应目录"><a href="#(4)如果cirros-0-4-0-x86-64-disk-img下载卡住,可以浏览器下载,再放入对应目录" class="headerlink" title="(4)如果cirros-0.4.0-x86_64-disk.img下载卡住,可以浏览器下载,再放入对应目录"></a>(4)如果cirros-0.4.0-x86_64-disk.img下载卡住,可以浏览器下载,再放入对应目录</h5><p>下载链接复制到浏览器 <a href="http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img">http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img</a><br>把下载好的镜像文件传到服务器,再放入对应目录</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line"># mv cirros-0.4.0-x86_64-disk.img /opt/stack/devstack/files/</span><br></pre></td></tr></table></figure>
<h5 id="(5)若git某个模块卡住,则可以手工git-clone"><a href="#(5)若git某个模块卡住,则可以手工git-clone" class="headerlink" title="(5)若git某个模块卡住,则可以手工git clone"></a>(5)若git某个模块卡住,则可以手工git clone</h5><figure class="highlight plain"><table><tr><td class="code"><pre><span class="line"># git clone http://git.trystack.cn/openstack/neutron /opt/stack/neutron -b stable/stein</span><br></pre></td></tr></table></figure>
<h4 id="4-5-控制节点安装结束后的输出"><a href="#4-5-控制节点安装结束后的输出" class="headerlink" title="4. 5 控制节点安装结束后的输出"></a>4. 5 控制节点安装结束后的输出</h4><p>执行 # ./run_tests.sh 进行各项服务的测试</p>
<p>执行 # openstack user list ,若出现 Missing value auth-url required for auth plugin password<br>则执行 # source openrc admin admin</p>
<h4 id="4-6-控制节点安装结束后登录OpenStack-web界面,账号密码均为-admin"><a href="#4-6-控制节点安装结束后登录OpenStack-web界面,账号密码均为-admin" class="headerlink" title="4. 6 控制节点安装结束后登录OpenStack web界面,账号密码均为 admin"></a>4. 6 控制节点安装结束后登录OpenStack web界面,账号密码均为 admin</h4><p> <a href="http://172.16.62.229/dashboard/auth/login/">http://172.16.62.229/dashboard/auth/login/</a></p>
<p>若侧边栏:管理员/计算/实例 报错,则检查nova日志</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line"># journalctl -f --unit [email protected]</span><br></pre></td></tr></table></figure>
<p>报错:oslo.messaging._drivers.impl_rabbit [-] AMQP server on 172.16.62.229 is unreachable: [Errno 104] Connection reset by peer.<br>rabbitmq添加用户</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> rabbitmqctl add_user admin admin</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> rabbitmqctl set_permissions -p / admin <span class="string">"."</span> <span class="string">"."</span> <span class="string">".*"</span> ;</span> </span><br><span class="line"><span class="meta">#</span><span class="bash"> rabbitmqctl set_user_tags admin administrator;</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> service rabbitmq-server restart</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> rabbitmqctl list_users</span></span><br></pre></td></tr></table></figure>
<h3 id="5-计算节点安装"><a href="#5-计算节点安装" class="headerlink" title="5. 计算节点安装"></a>5. 计算节点安装</h3><h4 id="5-1-安装计算节点,编辑local-conf"><a href="#5-1-安装计算节点,编辑local-conf" class="headerlink" title="5.1 安装计算节点,编辑local.conf"></a>5.1 安装计算节点,编辑local.conf</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> stack@computer1:~/devstack$ vim local.conf</span></span><br></pre></td></tr></table></figure>
<p>计算节点(ip与网卡名根据实际设置)</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">[[local|localrc]]</span><br><span class="line"><span class="meta">#</span><span class="bash">---------------common section even some node role may not use this setting</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> use TryStack git mirror</span></span><br><span class="line"></span><br><span class="line">GIT_BASE=http://git.trystack.cn</span><br><span class="line">NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git</span><br><span class="line">SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git</span><br><span class="line"><span class="meta">#</span><span class="bash">LIBVIRT_TYPE=kvm</span> </span><br><span class="line"></span><br><span class="line">DEST=/opt/stack</span><br><span class="line">LOGFILE=$DEST/logs/stack.sh.log</span><br><span class="line">VERBOSE=True</span><br><span class="line">LOGDAYS=1</span><br><span class="line">LOG_COLOR=True</span><br><span class="line">RECLONE=false</span><br><span class="line">PIP_UPGRADE=Flase</span><br><span class="line">DOWNLOAD_DEFAULT_IMAGES=False</span><br><span class="line">IMAGE_URLS="http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img"</span><br><span class="line">IP_VERSION=4</span><br><span class="line">SERVICE_IP_VERSION=4</span><br><span class="line">ENABLE_IDENTITY_V2=False</span><br><span class="line"></span><br><span class="line">DATABASE_TYPE=mysql</span><br><span class="line"></span><br><span class="line">SERVICE_HOST=控制结点的ip地址</span><br><span class="line">MYSQL_HOST=$SERVICE_HOST</span><br><span class="line">RABBIT_HOST=$SERVICE_HOST</span><br><span class="line">GLANCE_HOSTPORT=$SERVICE_HOST:9292</span><br><span class="line">ADMIN_PASSWORD=admin</span><br><span class="line">MYSQL_PASSWORD=admin</span><br><span class="line">RABBIT_PASSWORD=admin</span><br><span class="line">SERVICE_PASSWORD=admin</span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> Neutron options</span></span><br><span class="line"></span><br><span class="line">NEUTRON_CREATE_INITIAL_NETWORKS=False</span><br><span class="line"></span><br><span class="line">MULTI_HOST=1</span><br><span class="line"></span><br><span class="line">USE_PYTHON3=True</span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash">---------------compute node common section</span></span><br><span class="line">ENABLED_SERVICES=n-cpu,q-agt,n-api-meta,placement-client,n-novnc</span><br><span class="line"></span><br><span class="line">NOVA_VNC_ENABLED=True</span><br><span class="line">NOVNCPROXY_URL="http://$SERVICE_HOST:6080/vnc_auto.html"</span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash">---------------compute node special section</span></span><br><span class="line">HOST_IP=计算结点ip地址</span><br><span class="line">FLAT_INTERFACE=enp5s0(本机网卡名)</span><br><span class="line">VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP</span><br><span class="line">VNCSERVER_LISTEN=$HOST_IP</span><br><span class="line"><span class="meta">#</span><span class="bash">ENABLED_SERVICES+=,c-vol</span></span><br></pre></td></tr></table></figure>
<h4 id="5-2、计算节点上,修改脚本,同4-2"><a href="#5-2、计算节点上,修改脚本,同4-2" class="headerlink" title="5. 2、计算节点上,修改脚本,同4-2"></a>5. 2、计算节点上,修改脚本,同4-2</h4><h4 id="5-3、计算节点上,执行denstack安装脚本"><a href="#5-3、计算节点上,执行denstack安装脚本" class="headerlink" title="5. 3、计算节点上,执行denstack安装脚本"></a>5. 3、计算节点上,执行denstack安装脚本</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> FORCE=yes ./stack.sh</span></span><br></pre></td></tr></table></figure>
<h4 id="5-4、计算节点上,报错后的一些操作"><a href="#5-4、计算节点上,报错后的一些操作" class="headerlink" title="5. 4、计算节点上,报错后的一些操作"></a>5. 4、计算节点上,报错后的一些操作</h4><p> 每次报错后都要先执行 ./unstack.sh<br> 再执行步骤5-3<br> 具体操作同4-4,一般只会遇到4-4-(1)、(3)的报错,git clone和安装时的网络环境有关</p>
<h4 id="5-5、计算节点安装结束后的输出"><a href="#5-5、计算节点安装结束后的输出" class="headerlink" title="5. 5、计算节点安装结束后的输出"></a>5. 5、计算节点安装结束后的输出</h4><p>执行 # ./run_tests.sh 进行各项服务的测试</p>
<p>执行 # openstack user list ,若出现 Missing value auth-url required for auth plugin password<br>则执行 # source openrc admin admin</p>
<h4 id="5-6、让计算节点注册,在控制节点上运行"><a href="#5-6、让计算节点注册,在控制节点上运行" class="headerlink" title="5. 6、让计算节点注册,在控制节点上运行"></a>5. 6、让计算节点注册,在控制节点上运行</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">stack@controller:~/devstack$ /opt/stack/devstack/tools/discover_hosts.sh</span><br></pre></td></tr></table></figure>
<h4 id="5-7、计算节点安装结束后登录OpenStack-web界面,账号密码均为-admin格式为"><a href="#5-7、计算节点安装结束后登录OpenStack-web界面,账号密码均为-admin格式为" class="headerlink" title="5. 7、计算节点安装结束后登录OpenStack web界面,账号密码均为 admin格式为"></a>5. 7、计算节点安装结束后登录OpenStack web界面,账号密码均为 admin格式为</h4><p>http://控制结点ip地址/dashboard/auth/login/</p>
<p>例如:<a href="http://172.16.62.229/dashboard/auth/login/">http://172.16.62.229/dashboard/auth/login/</a></p>
<p>侧边栏:管理员/计算/虚拟机管理器,可以看到新增的计算节点<br>http://控制结点ip地址/dashboard/admin/hypervisors/</p>
]]></content>
<categories>
<category>云计算</category>
</categories>
<tags>
<tag>OpenStack</tag>
</tags>
</entry>
<entry>
<title>Ubuntu18.04基础环境配置</title>
<url>/2020/7178/</url>
<content><![CDATA[<h3 id="1-设置静态ip与DNS"><a href="#1-设置静态ip与DNS" class="headerlink" title="1. 设置静态ip与DNS"></a>1. 设置静态ip与DNS</h3><ul>
<li><p>修改/etc/network/interfaces设置静态ip</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> gedit /etc/network/interfaces</span></span><br></pre></td></tr></table></figure>
</li>
</ul>
<a id="more"></a>
<p> 修改如下:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> interfaces(5) file used by ifup(8) and ifdown(8)</span></span><br><span class="line">auto lo</span><br><span class="line">iface lo inet loopback</span><br><span class="line">auto enp5s0 # 网卡的名称要根据实际设置,有可能是enp1s0</span><br><span class="line">iface enp5s0 inet static</span><br><span class="line">address 172.16.62.237 # 根据实际需要设置231-239</span><br><span class="line">netmask 255.255.255.0</span><br><span class="line">gateway 172.16.62.254</span><br></pre></td></tr></table></figure>
<p> 重启网络服务:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> service networking restart</span></span><br></pre></td></tr></table></figure>
<ul>
<li>修改/etc/systemd/resolved.conf设置NDS</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> gedit /etc/systemd/resolved.conf</span></span><br></pre></td></tr></table></figure>
<p> 修改如下:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">[Resolve]</span><br><span class="line">DNS=114.114.114.114</span><br></pre></td></tr></table></figure>
<p> 重启DNS服务:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> service systemd-resolved restart</span></span><br></pre></td></tr></table></figure>
<ul>
<li>3 设置hosts与hostname,并重启</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> gedit /etc/hosts</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> gedit /etc/hostname</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> reboot</span></span><br></pre></td></tr></table></figure>
<h4 id="2-更换国内apt源,并更新软件"><a href="#2-更换国内apt源,并更新软件" class="headerlink" title="2. 更换国内apt源,并更新软件"></a>2. 更换国内apt源,并更新软件</h4><figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> cp /etc/apt/sources.list /etc/apt/sources.list.backup</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> vi /etc/apt/sources.list</span></span><br></pre></td></tr></table></figure>
<p> 阿里云源 <a href="https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11nkzu7o">https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11nkzu7o</a></p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse</span><br><span class="line"></span><br><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse</span><br><span class="line"></span><br><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse</span><br><span class="line"></span><br><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse</span><br><span class="line"></span><br><span class="line">deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse</span><br><span class="line">deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get update</span></span><br><span class="line"><span class="meta">#</span><span class="bash"> apt-get upgrade</span></span><br></pre></td></tr></table></figure>
<h4 id="3、安装基础软件"><a href="#3、安装基础软件" class="headerlink" title="3、安装基础软件"></a>3、安装基础软件</h4><ul>
<li> vi不能正常使用上下左右方向键,卸载后重新安装vi/vim</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get remove vim-common</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y vim</span></span><br></pre></td></tr></table></figure>
<ul>
<li>安装ip、ifconfig、ping、traceroute</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y iproute2 net-tools iputils-ping traceroute</span></span><br></pre></td></tr></table></figure>
<ul>
<li>安装pip2、pip3,并更换国内源**</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y python-pip python3-pip</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> mkdir ~/.pip</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> vim ~/.pip/pip.conf</span></span><br><span class="line"></span><br><span class="line">[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple extra-index-url = https://mirrors.163.com/pypi/simple/ timeout = 60 </span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> ln -s /usr/bin/pip2 /usr/bin/pip2.7</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> ln -s /usr/bin/pip3 /usr/bin/pip3.6</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> rm -f /usr/bin/pip</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> ln -s /usr/bin/pip3 /usr/bin/pip</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> rm -f /usr/bin/python</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash"> ln -s /usr/bin/python3 /usr/bin/python</span></span><br></pre></td></tr></table></figure>
<ul>
<li>安装文件上传下载工具lrzsz、同步工具rsync</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y lrzsz rsync</span></span><br></pre></td></tr></table></figure>
<ul>
<li>安装ssh-server,并配置</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y openssh-server</span></span><br></pre></td></tr></table></figure>
<p>检查ssh-server是否启动:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> ps -aux | grep sshd</span></span><br></pre></td></tr></table></figure>
<p>若未出现sshd结果,则执行:</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> service ssh start</span></span><br></pre></td></tr></table></figure>
<ul>
<li>安装发包工具、流量统计工具netperf、iperf、iftop、vnstat</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y netperf iperf iftop vnstat</span></span><br></pre></td></tr></table></figure>
<ul>
<li>安装docker</li>
</ul>
<figure class="highlight shell"><table><tr><td class="code"><pre><span class="line"><span class="meta">#</span><span class="bash"> apt-get install -y docker.io</span></span><br></pre></td></tr></table></figure>
]]></content>
<categories>
<category>Linux</category>
</categories>
<tags>
<tag>OVS</tag>
</tags>
</entry>
<entry>
<title>OVS Tunnel Options</title>
<url>/2020/63049/</url>
<content><![CDATA[<ul>
<li><p><strong>options: remote_ip</strong></p>
<p>String类型,远程隧道端口。必须是个单播地址ipv4或者ipv6,或者是一个关键词flow。如果设置成flow,即remote_ip=flow则flow这个动作(set_field)必须指定tun_dst或tun_ipv6_dst为远程隧道端口的IP。</p>
</li>
<li><p><strong>options: local_ip</strong></p>
<p>String类型,本地隧道端口。必须是个单播地址ipv4或者ipv6,或者是一个关键词flow。如果设置成flow,即local_ip=flow则flow这个动作(set_field)必须指定tun_src或者tun_ipv6_src为本地隧道端口的IP。</p>
<a id="more"></a>
</li>
<li><p><strong>options: in_key</strong></p>
<p>String类型,隧道接收的包,包的key值含以下三者之一:0,包中如果没有key或者这个key是0,则表示没有这个属性;一个确定的24bit(Geneve,VXLAN,LISP),32bit(GRE),64bit(STT)数字,隧道会接收以上指定key的包;关键字flow,隧道会接收任意key的包,key会被替换成tun_id,并使用tun_id去匹配流表。</p>
</li>
<li><p><strong>options: out_key</strong></p>
<p>String类型,隧道发送的包,包的key值被设置为:0,包如果被设置为0,则发送的包不会带有该属性,等同于不设置改属性;一个确定的24bit(Geneve,VXLAN,LISP),32bit(GRE),64bit(STT)数字,隧道发送的包会带上该key;关键字flow,隧道会设置key值。</p>
</li>
<li><p><strong>options: key</strong></p>
<p>String类型,如果in_key和out_key是同一数值,则可以合并为该属性。</p>
</li>
<li><p><strong>options: tos</strong></p>
<p>String类型,在封包的时候添加进ToS字段。</p>
</li>
<li><p><strong>options: ttl</strong></p>
<p>String类型,可以设置为inherit、数字、不设置,TTL字段会被设置在封装包中,该属性表示该包在路由前最大经过的网段数量。inherit表示从inner packet(必须要是ipv4或ipv6)中拷贝TTL字段,不设置则默认为64。</p>
</li>
<li><p><strong>options: df_default</strong></p>
<p>布尔类型,如果为true表示不分包bit会被设置在封装包头中,去让MTU发现。</p>
</li>
<li><p><strong>Tunnel Options: vxlan only</strong></p>
<ul>
<li><strong>options: exts</strong>—以逗号为分隔的vxlan扩展功能,目前支持的属性有:gbp,VXLAN-GBP允许传输一个包的组策略上下文在vxlan隧道中。</li>
</ul>
</li>
<li><p><strong>Tunnel Options: gre, ipsec_gre, geneve, vxlan</strong></p>
<ul>
<li><strong>options: csum</strong> — String类型,只可能是True、False。在发包中计算封包头的校验,GRE默认支持,vxlan和geneve则需要kernel > 4.0</li>
</ul>
</li>
</ul>
]]></content>
<categories>
<category>OVS</category>
</categories>
<tags>
<tag>OVS</tag>
</tags>
</entry>
</search>