-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlocal-search.xml
717 lines (345 loc) · 542 KB
/
local-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
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>手动搭建Openstack完全分布式(Rocky版)</title>
<link href="/2024/12/19/%E6%89%8B%E5%8A%A8%E6%90%AD%E5%BB%BAOpenstack%E5%AE%8C%E5%85%A8%E5%88%86%E5%B8%83%E5%BC%8F(Rocky%E7%89%88)/"/>
<url>/2024/12/19/%E6%89%8B%E5%8A%A8%E6%90%AD%E5%BB%BAOpenstack%E5%AE%8C%E5%85%A8%E5%88%86%E5%B8%83%E5%BC%8F(Rocky%E7%89%88)/</url>
<content type="html"><![CDATA[<h1 id="手动搭建Openstack完全分布式-Rocky版"><a href="#手动搭建Openstack完全分布式-Rocky版" class="headerlink" title="手动搭建Openstack完全分布式(Rocky版)"></a>手动搭建Openstack完全分布式(Rocky版)</h1><hr><p><strong>本文均采用openstack快速修改配置文件工具进行修改,强力感谢<a href="https://blog.csdn.net/zz_aiytag">@再看我把你吃掉</a>博主的<a href="https://blog.csdn.net/zz_aiytag/article/details/104390440">《centos7.4安装部署openstack(rocky)》</a>博客的帮助!!!!!!</strong></p><hr><h2 id="规划"><a href="#规划" class="headerlink" title="规划"></a>规划</h2><table><thead><tr><th>controller节点</th><th>computer节点</th></tr></thead><tbody><tr><td>MariaDB数据库服务</td><td></td></tr><tr><td>RabbitMQ消息队列服务</td><td></td></tr><tr><td>Memcached缓存服务</td><td></td></tr><tr><td>etcd服务</td><td></td></tr><tr><td>keystone身份认证服务</td><td></td></tr><tr><td>httpd服务</td><td></td></tr><tr><td>glance镜像服务</td><td></td></tr><tr><td>nova计算的管理服务</td><td>nova计算服务</td></tr><tr><td>placement资源监控服务</td><td></td></tr><tr><td>neutron网络服务</td><td></td></tr><tr><td>dashboard面板服务</td><td></td></tr></tbody></table><h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><h3 id="1-修改controller和computer的主机名"><a href="#1-修改controller和computer的主机名" class="headerlink" title="1. 修改controller和computer的主机名"></a>1. 修改controller和computer的主机名</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">修改controller的主机名</span><br>hostnamectl set-hostname controller<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">修改computer的主机名</span><br>hostnamectl set-hostname computer<br></code></pre></td></tr></table></figure><h3 id="2-配置hosts文件"><a href="#2-配置hosts文件" class="headerlink" title="2. 配置hosts文件"></a>2. 配置hosts文件</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">在controller节点上面配置hosts文件,后续通过工具同步到computer文件</span><br>cat >> /etc/hosts << EOF<br>192.168.66.6 controller<br>192.168.66.7 computer<br>EOF<br></code></pre></td></tr></table></figure><h3 id="3-配置controller节点SSH免密钥登录集群"><a href="#3-配置controller节点SSH免密钥登录集群" class="headerlink" title="3. 配置controller节点SSH免密钥登录集群"></a>3. 配置controller节点SSH免密钥登录集群</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">controller节点生成SSH秘钥</span><br>ssh-keygen -t ed25519 -P ""<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">contorller节点传输SSH私钥到本机</span><br>ssh-copy-id root@controller<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">contorller节点传输SSH私钥到computer节点</span><br>ssh-copy-id root@computer<br></code></pre></td></tr></table></figure><h3 id="4-关闭Selinux和防火墙"><a href="#4-关闭Selinux和防火墙" class="headerlink" title="4. 关闭Selinux和防火墙"></a>4. 关闭Selinux和防火墙</h3><blockquote><p>完全关闭Selinux需要重启才会生效</p></blockquote><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">临时关闭selinux</span><br>setenforce 0<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">controller节点永久关闭selinux</span><br>sed -i 's|SELINUX=enforcing|SELINUX=disabled|' /etc/selinux/config<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">computer节点永久关闭Selinux</span><br>ssh computer "sed -i 's|SELINUX=enforcing|SELINUX=disabled|' /etc/selinux/config"<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">关闭controller节点的防火墙并禁用开机自启动</span><br>systemctl stop firewalld && systemctl disable firewalld<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">关闭computer节点的防火墙并禁用开机自启动</span><br>ssh computer "systemctl stop firewalld && systemctl disable firewalld"<br></code></pre></td></tr></table></figure><h3 id="5-安装配置chrony时间同步服务"><a href="#5-安装配置chrony时间同步服务" class="headerlink" title="5. 安装配置chrony时间同步服务"></a>5. 安装配置chrony时间同步服务</h3><h4 id="5-1-controller节点安装时间同步服务"><a href="#5-1-controller节点安装时间同步服务" class="headerlink" title="5.1 controller节点安装时间同步服务"></a>5.1 controller节点安装时间同步服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">controller节点安装chrony服务</span><br>yum install -y chrony<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">注释原有chrony时间服务器</span><br>sed -i "s|server|# server|" /etc/chrony.conf <br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">添加controller为时间同步服务器节点</span><br>sed -i '6a server controller iburst' /etc/chrony.conf <br><br><br></code></pre></td></tr></table></figure><h4 id="5-2-computer节点使用时间同步服务器"><a href="#5-2-computer节点使用时间同步服务器" class="headerlink" title="5.2 computer节点使用时间同步服务器"></a>5.2 computer节点使用时间同步服务器</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">computer节点安装chrony服务</span><br>ssh computer "yum install -y chrony"<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">同步chrony.conf配置文件到computer节点</span><br>scp /etc/chrony.conf computer:/etc/<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">同步hosts文件到computer节点</span><br>scp /etc/hosts computer:/etc/<br></code></pre></td></tr></table></figure><h4 id="5-3-重启chrony服务"><a href="#5-3-重启chrony服务" class="headerlink" title="5.3 重启chrony服务"></a>5.3 重启chrony服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">controller节点重启chrony服务</span><br>systemctl restart chrony*<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">computer节点重启chrony服务</span><br>ssh computer 'systemctl restart chrony*'<br></code></pre></td></tr></table></figure><h4 id="5-4-验证chrony服务"><a href="#5-4-验证chrony服务" class="headerlink" title="5.4 验证chrony服务"></a>5.4 验证chrony服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">controller节点验证</span><br>chronyc sources<br><span class="hljs-meta prompt_"># </span><span class="language-bash">computer节点验证</span><br>ssh computer "chronyc sources"<br></code></pre></td></tr></table></figure><h3 id="6-创建openstack的rocky版本的repo源文件"><a href="#6-创建openstack的rocky版本的repo源文件" class="headerlink" title="6. 创建openstack的rocky版本的repo源文件"></a>6. 创建openstack的rocky版本的repo源文件</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs shell">cat > /etc/yum.repos.d/openstack.repo << "EOF"<br>[openstack-rocky]<br>name=openstack-rocky<br>baseurl=https://mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-rocky/<br>enabled=1<br>gpgcheck=0<br>[qume-kvm]<br>name=qemu-kvm<br>baseurl= https://mirrors.aliyun.com/centos/7/virt/x86_64/kvm-common/<br>enabled=1<br>gpgcheck=0<br>EOF<br><br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">同步repo文件到computer节点</span><br>scp /etc/yum.repos.d/openstack.repo computer:/etc/yum.repos.d/<br></code></pre></td></tr></table></figure><h3 id="7-重启服务器"><a href="#7-重启服务器" class="headerlink" title="7. 重启服务器"></a>7. 重启服务器</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">重启computer节点</span><br>ssh computer "reboot"<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">重启controller节点</span><br>reboot<br></code></pre></td></tr></table></figure><h2 id="正式安装搭建"><a href="#正式安装搭建" class="headerlink" title="正式安装搭建"></a>正式安装搭建</h2><h3 id="8-安装Openstack客户端软件包"><a href="#8-安装Openstack客户端软件包" class="headerlink" title="8. 安装Openstack客户端软件包"></a>8. 安装Openstack客户端软件包</h3><blockquote><p>controller节点和computer节点都需要进行安装</p></blockquote><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">controller节点安装Openstack客户端release包</span><br>yum install centos-release-openstack-rocky -y<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">进入yum源配置</span><br>cd /etc/yum.repos.d/ <br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">备份客户端自带的yum源</span><br>mv CentOS-OpenStack-rocky.repo CentOS-OpenStack-rocky.repo.bak<br>mv CentOS-QEMU-EV.repo CentOS-QEMU-EV.repo.bak<br>mv CentOS-Ceph-Luminous.repo CentOS-Ceph-Luminous.repo.bak<br>mv CentOS-Storage-common.repo CentOS-Storage-common.repo.bak<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">controller节点安装Openstack客户端包</span><br>yum install python-openstackclient openstack-selinux -y<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">computerr节点安装Openstack客户端release包</span><br>ssh computer "yum install centos-release-openstack-rocky -y"<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">备份客户端自带的yum源</span><br>ssh computer "mv /etc/yum.repos.d/CentOS-OpenStack-rocky.repo /etc/yum.repos.d/CentOS-OpenStack-rocky.repo.bak"<br>ssh computer "mv /etc/yum.repos.d/CentOS-QEMU-EV.repo /etc/yum.repos.d/CentOS-QEMU-EV.repo.bak"<br>ssh computer "mv /etc/yum.repos.d/CentOS-Ceph-Luminous.repo /etc/yum.repos.d/CentOS-Ceph-Luminous.repo.bak"<br>ssh computer "mv /etc/yum.repos.d/CentOS-Storage-common.repo /etc/yum.repos.d/CentOS-Storage-common.repo.bak"<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">computer节点安装Openstack客户端包</span><br>ssh computer "yum install python-openstackclient openstack-selinux -y"<br></code></pre></td></tr></table></figure><h3 id="9-安装配置mariadb数据库-仅在controller节点"><a href="#9-安装配置mariadb数据库-仅在controller节点" class="headerlink" title="9. 安装配置mariadb数据库(仅在controller节点)"></a>9. 安装配置mariadb数据库(仅在controller节点)</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">安装Mariadb数据库</span><br>yum install mariadb mariadb-server python2-PyMySQL -y<br></code></pre></td></tr></table></figure><h4 id="9-1-配置数据库"><a href="#9-1-配置数据库" class="headerlink" title="9.1 配置数据库"></a>9.1 配置数据库</h4><blockquote><p>下方的IP地址,需要根据自己的配置修改,可以修改为0.0.0.0任意地址</p></blockquote><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs shell">cat >> /etc/my.cnf.d/openstack.cnf << "EOF"<br>[mysqld]<br>bind-address = 192.168.66.6<br>default-storage-engine = innodb<br>innodb_file_per_table = on<br>max_connections = 4096<br>collation-server = utf8_general_ci<br>character-set-server = utf8<br>EOF<br><br><br></code></pre></td></tr></table></figure><h4 id="9-2-启动数据库"><a href="#9-2-启动数据库" class="headerlink" title="9.2 启动数据库"></a>9.2 启动数据库</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">启动数据库</span><br>systemctl start mariadb<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看数据库状态</span><br>systemctl status mariadb<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">让数据库开机自启动</span><br>systemctl enable mariadb<br></code></pre></td></tr></table></figure><h4 id="9-3-加固数据库以及设置数据库超级管理员密码"><a href="#9-3-加固数据库以及设置数据库超级管理员密码" class="headerlink" title="9.3 加固数据库以及设置数据库超级管理员密码"></a>9.3 加固数据库以及设置数据库超级管理员密码</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">进行数据库加固操作</span><br>mysql_secure_installation<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><code class="hljs shell">----------------------------------------------<br> 说明<br><br>NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB<br> SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!<br>......<br><span class="hljs-meta prompt_"># </span><span class="language-bash">表示是否为数据库的root账户设置密码</span><br>Enter current password for root (enter for none): #直接回车<br>OK, successfully used password, moving on...<br>......<br><span class="hljs-meta prompt_"># </span><span class="language-bash">是否设置root密码</span><br>Set root password? [Y/n] y<br>New password: #输入新密码 123456<br>Re-enter new password: #再次输入密码<br>Password updated successfully!<br>Reloading privilege tables..<br> ... Success!<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_">#</span><span class="language-bash">以下几项交互根据实际情况设置</span><br>......<br><span class="hljs-meta prompt_"># </span><span class="language-bash">是否移除匿名用户</span><br>Remove anonymous users? [Y/n] y <br>......<br><span class="hljs-meta prompt_"># </span><span class="language-bash">是否禁止数据库的root账户远程登录</span><br>Disallow root login remotely? [Y/n] n<br>......<br><span class="hljs-meta prompt_"># </span><span class="language-bash">是否移除<span class="hljs-built_in">test</span>数据库并访问它</span><br>Remove test database and access to it? [Y/n] y<br>......<br><span class="hljs-meta prompt_"># </span><span class="language-bash">是否现在重载权限表</span><br>Reload privilege tables now? [Y/n] y<br>......<br>All done! If you've completed all of the above steps, your MariaDB<br>installation should now be secure.<br><br>Thanks for using MariaDB!<br><br>--------------------------------------------------------------<br></code></pre></td></tr></table></figure><h4 id="9-4-测试数据库"><a href="#9-4-测试数据库" class="headerlink" title="9.4 测试数据库"></a>9.4 测试数据库</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">使用root用户和密码进行登录</span><br>mysql -u root -p<br><br><br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">若连接成功,则会输出以下内容</span><br>Welcome to the MariaDB monitor. Commands end with ; or \g.<br>Your MariaDB connection id is 9<br>Server version: 10.1.20-MariaDB MariaDB Server<br><br>Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.<br><br>Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.<br><br>MariaDB [(none)]><br></code></pre></td></tr></table></figure><h3 id="10-安装配置消息队列服务-仅在controller节点"><a href="#10-安装配置消息队列服务-仅在controller节点" class="headerlink" title="10. 安装配置消息队列服务(仅在controller节点)"></a>10. 安装配置消息队列服务(仅在controller节点)</h3><h4 id="10-1-安装rabbitmq服务"><a href="#10-1-安装rabbitmq服务" class="headerlink" title="10.1 安装rabbitmq服务"></a>10.1 安装rabbitmq服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">controller节点安装Rabbitmq服务</span><br>yum install rabbitmq-server -y<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">启动Rabbitmq-server服务</span><br>systemctl start rabbitmq-server<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看Rabbitmq-server服务状态</span><br>systemctl status rabbitmq-server<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">让Rabbitmq-server服务开机自启动</span><br>systemctl enable rabbitmq-server<br></code></pre></td></tr></table></figure><h4 id="10-2-配置rabbitmq服务"><a href="#10-2-配置rabbitmq服务" class="headerlink" title="10.2 配置rabbitmq服务"></a>10.2 配置rabbitmq服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">添加rabbitmq的访问用户“openstack”</span><br>rabbitmqctl add_user openstack 123456<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">授予用户<span class="hljs-string">"openstack"</span>访问权限</span><br>rabbitmqctl set_permissions openstack ".*" ".*" ".*"<br></code></pre></td></tr></table></figure><h4 id="10-3-启动rabbitmq服务"><a href="#10-3-启动rabbitmq服务" class="headerlink" title="10.3 启动rabbitmq服务"></a>10.3 启动rabbitmq服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">列出Rabbitmq的插件列表</span><br>rabbitmq-plugins list<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">启动Rabbitmq的插件并开启Rabbitmq管理服务</span><br>rabbitmq-plugins enable rabbitmq_management<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">重启rabbitmq服务</span><br>systemctl restart rabbitmq-server.service<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">列出Rabbitmq的已经开启的插件列表</span><br>rabbitmq-plugins list<br><br></code></pre></td></tr></table></figure><h4 id="10-4-测试rabbitmq服务"><a href="#10-4-测试rabbitmq服务" class="headerlink" title="10.4 测试rabbitmq服务"></a>10.4 测试rabbitmq服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs shell">浏览器访问http://controller节点的IP:15672<br><br>默认管理员账户:guest<br>默认管理员密码:guest<br></code></pre></td></tr></table></figure><h3 id="11-安装配置memcached缓存服务-仅在controller节点"><a href="#11-安装配置memcached缓存服务-仅在controller节点" class="headerlink" title="11. 安装配置memcached缓存服务(仅在controller节点)"></a>11. 安装配置memcached缓存服务(仅在controller节点)</h3><h4 id="11-1-安装Memcached服务"><a href="#11-1-安装Memcached服务" class="headerlink" title="11.1 安装Memcached服务"></a>11.1 安装Memcached服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">ctronller节点安装Memcached服务</span><br>yum install memcached python-memcached -y<br></code></pre></td></tr></table></figure><h4 id="11-2-配置Memcached服务"><a href="#11-2-配置Memcached服务" class="headerlink" title="11.2 配置Memcached服务"></a>11.2 配置Memcached服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">添加controller节点的主机名让其可以访问</span><br>sed -i "s|127.0.0.1,::1|127.0.1,::1,controller|" /etc/sysconfig/memcached<br></code></pre></td></tr></table></figure><h4 id="11-3-重启Memcached服务"><a href="#11-3-重启Memcached服务" class="headerlink" title="11.3 重启Memcached服务"></a>11.3 重启Memcached服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">重启Memcached服务</span><br>systemctl restart memcached <br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">让memcached服务开机自启动</span><br>systemctl enable memcached<br></code></pre></td></tr></table></figure><h3 id="12-安装配置etcd服务-仅在controller节点"><a href="#12-安装配置etcd服务-仅在controller节点" class="headerlink" title="12. 安装配置etcd服务(仅在controller节点)"></a>12. 安装配置etcd服务(仅在controller节点)</h3><h4 id="12-1-安装etcd服务"><a href="#12-1-安装etcd服务" class="headerlink" title="12.1 安装etcd服务"></a>12.1 安装etcd服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">controller节点安装etcd服务</span><br>yum install etcd -y <br></code></pre></td></tr></table></figure><h4 id="12-2-配置etcd服务"><a href="#12-2-配置etcd服务" class="headerlink" title="12.2 配置etcd服务"></a>12.2 配置etcd服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">修改该etcd服务的节点名称,便于其他节点识别</span><br>sed -i '9s|default|controller|' /etc/etcd/etcd.conf<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">删除etcd监听对等节点的URL的注释</span><br>sed -i '5s|#||' /etc/etcd/etcd.conf<br><span class="hljs-meta prompt_"># </span><span class="language-bash">删除etcd内部通信URL的注释</span><br>sed -i '20s|#||' /etc/etcd/etcd.conf<br><span class="hljs-meta prompt_"># </span><span class="language-bash">删除etcd初始化集群URL的注释</span><br>sed -i '26s|#||' /etc/etcd/etcd.conf<br><span class="hljs-meta prompt_"># </span><span class="language-bash">删除etcd初始化集群token的注释</span><br>sed -i '27s|#||' /etc/etcd/etcd.conf<br><span class="hljs-meta prompt_"># </span><span class="language-bash">删除etcd初始化集群状态的注释</span><br>sed -i '28s|#||' /etc/etcd/etcd.conf<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">将etcd配置文件中所有本地地址替换为任意地址</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">也可以替换为IP地址</span><br>sed -i 's|localhost|0.0.0.0|' /etc/etcd/etcd.conf<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">修改该etcd初始化集群的节点名称</span><br>sed -i '26s|default|controller|' /etc/etcd/etcd.conf<br></code></pre></td></tr></table></figure><h4 id="12-3-启动etcd服务"><a href="#12-3-启动etcd服务" class="headerlink" title="12.3 启动etcd服务"></a>12.3 启动etcd服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">重启etcd服务</span><br>systemctl restart etcd<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看etcd服务的状态</span><br>systemctl status etcd<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">让etcd服务开机自启动</span><br>systemctl enable etcd<br></code></pre></td></tr></table></figure><h3 id="13-安装配置keystone认证服务-仅在controller"><a href="#13-安装配置keystone认证服务-仅在controller" class="headerlink" title="13. 安装配置keystone认证服务(仅在controller)"></a>13. 安装配置keystone认证服务(仅在controller)</h3><h4 id="13-1-创建keystone数据库"><a href="#13-1-创建keystone数据库" class="headerlink" title="13.1 创建keystone数据库"></a>13.1 创建keystone数据库</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">进入数据库</span><br>mysql -u root -p<br></code></pre></td></tr></table></figure><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs sql"># 创建keystone数据库<br><span class="hljs-keyword">CREATE</span> DATABASE keystone;<br><br># 创建keystone用户并赋予“<span class="hljs-number">123456</span>”密码给该用户<br># 最后赋予keystone数据库的所有权限给该用户<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> keystone.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'keystone'</span>@<span class="hljs-string">'localhost'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br><br># 给keystone用户远程操作keystone数据库的权限<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> keystone.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'keystone'</span>@<span class="hljs-string">'%'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br><br># keystone用户使用“mysql_native_password”认证插件进行认证<br><span class="hljs-keyword">UPDATE</span> mysql.user <span class="hljs-keyword">SET</span> authentication_string <span class="hljs-operator">=</span> PASSWORD(<span class="hljs-string">'123456'</span>), plugin <span class="hljs-operator">=</span> <span class="hljs-string">'mysql_native_password'</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">User</span> <span class="hljs-operator">=</span> <span class="hljs-string">'keystone'</span> <span class="hljs-keyword">AND</span> Host <span class="hljs-operator">=</span> <span class="hljs-string">'%'</span>;<br><br># 刷新权限<br>flush privileges;<br></code></pre></td></tr></table></figure><h4 id="13-2-安装keystone"><a href="#13-2-安装keystone" class="headerlink" title="13.2 安装keystone"></a>13.2 安装keystone</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">安装快速修改配置文件工具</span><br>yum install openstack-utils -y<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">安装keystone工具包以及httpd服务</span><br>yum install openstack-keystone httpd mod_wsgi -y<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">如果安装出现依赖关系错误,根据报错信息,以如下命令,安装指定安装包的依赖</span><br>yum install qpid-proton-c-0.22.0-1.el7.x86_64 -y <br></code></pre></td></tr></table></figure><h4 id="13-3-配置keystone服务"><a href="#13-3-配置keystone服务" class="headerlink" title="13.3 配置keystone服务"></a>13.3 配置keystone服务</h4><blockquote><p>这里的内容需要根据自己配置进行更改</p></blockquote><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">修改keystone的mysql数据库连接用户名以及密码</span><br>openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:123456@controller/keystone<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置Keystone使用“Fernet”令牌来管理身份验证令牌</span><br>openstack-config --set /etc/keystone/keystone.conf token provider fernet<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>grep "^[a-z]" /etc/keystone/keystone.conf <br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看keystone配置文件中,每个具体的数据项的配置</span><br>egrep -v "^#|^$" /etc/keystone/keystone.conf <br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">同步数据库</span><br>su -s /bin/sh -c "keystone-manage db_sync" keystone<br></code></pre></td></tr></table></figure><h4 id="13-4-验证数据库同步结果"><a href="#13-4-验证数据库同步结果" class="headerlink" title="13.4 验证数据库同步结果"></a>13.4 验证数据库同步结果</h4><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs sql"># 选择keystone数据库<br>use keystone;<br><br># 查看keystone数据库中的表。此时若同步成功,则会有<span class="hljs-number">44</span>张表<br><span class="hljs-keyword">show</span> tables;<br></code></pre></td></tr></table></figure><h4 id="13-5-初始化Fernet-Key库"><a href="#13-5-初始化Fernet-Key库" class="headerlink" title="13.5 初始化Fernet Key库"></a>13.5 初始化Fernet Key库</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置Keystone服务的管理员是keystone用户,并且该用户属于keystone组</span><br>keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置keystone服务凭证的管理员是keystone,并且该用户属于keystone组</span><br>keystone-manage credential_setup --keystone-user keystone --keystone-group keystone<br><br><br></code></pre></td></tr></table></figure><h4 id="13-6-创建认证实体服务"><a href="#13-6-创建认证实体服务" class="headerlink" title="13.6 创建认证实体服务"></a>13.6 创建认证实体服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置Keystone服务中认证实体的密码(此密码可以与之前的密码不同)</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置认证实体管理员的URL、内部通信URL、外部通信URL以及区域ID</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">【上述URL中的controller需要替换成你自己的主机名】</span><br><br>keystone-manage bootstrap --bootstrap-password kst123456 \<br>--bootstrap-admin-url http://controller:5000/v3/ \<br>--bootstrap-internal-url http://controller:5000/v3/ \<br>--bootstrap-public-url http://controller:5000/v3/ \<br>--bootstrap-region-id RegionOne<br></code></pre></td></tr></table></figure><h4 id="13-7-配置httpd服务"><a href="#13-7-配置httpd服务" class="headerlink" title="13.7 配置httpd服务"></a>13.7 配置httpd服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置httpd服务的”服务名“(需要与主机名一致)</span><br>sed -i '95s|#ServerName www.example.com:80|ServerName controller|' /etc/httpd/conf/httpd.conf<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">检查配置</span><br>cat /etc/httpd/conf/httpd.conf |grep ServerName<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">建立文件链接,将<span class="hljs-string">"Keystone"</span>的配置文件链接到<span class="hljs-string">"Apache"</span>的配置目录</span><br>ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/<br><br></code></pre></td></tr></table></figure><h4 id="13-8-启动httpd服务"><a href="#13-8-启动httpd服务" class="headerlink" title="13.8 启动httpd服务"></a>13.8 启动httpd服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">重启httpd服务</span><br>systemctl restart httpd<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看httpd服务状态</span><br>systemctl status httpd<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">使httpd服务开机自启动</span><br>systemctl enable httpd<br></code></pre></td></tr></table></figure><h4 id="13-9-手动引入keystone服务的用户环境变量并创建对应服务"><a href="#13-9-手动引入keystone服务的用户环境变量并创建对应服务" class="headerlink" title="13.9 手动引入keystone服务的用户环境变量并创建对应服务"></a>13.9 手动引入keystone服务的用户环境变量并创建对应服务</h4><h5 id="13-9-1-手动引入keystone服务的用户环境变量"><a href="#13-9-1-手动引入keystone服务的用户环境变量" class="headerlink" title="13.9.1 手动引入keystone服务的用户环境变量"></a>13.9.1 手动引入keystone服务的用户环境变量</h5><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置keystone服务的管理员用户</span><br>export OS_USERNAME=admin<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置keystone服务的管理员密码【即“创建认证实体服务”中设置的密码】</span><br>export OS_PASSWORD=kst123456 <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置keystone服务的管理员项目名</span><br>export OS_PROJECT_NAME=admin<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置keystone服务的默认用户域</span><br>export OS_USER_DOMAIN_NAME=Default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置keystone服务的默认管理员项目域</span><br>export OS_PROJECT_DOMAIN_NAME=Default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置keystone服务的管理员认证URL【即“创建认证实体服务”中设置的外部URL】</span><br>export OS_AUTH_URL=http://controller:5000/v3<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置keystone服务的身份认证API的版本</span><br>export OS_IDENTITY_API_VERSION=3<br><br><br></code></pre></td></tr></table></figure><h5 id="13-9-2-查看初始keystone数据库的project表内容"><a href="#13-9-2-查看初始keystone数据库的project表内容" class="headerlink" title="13.9.2 查看初始keystone数据库的project表内容"></a>13.9.2 查看初始keystone数据库的project表内容</h5><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs sql"># 首先进入数据库<br>mysql <span class="hljs-operator">-</span>u root <span class="hljs-operator">-</span>p<br><br># 切换到keystone数据库<br>use keystone;<br><br># 查看keystone数据库中project表的内容【这时候应该有<span class="hljs-number">3</span>行数据,没有则“创建认证实体服务”出错】<br><span class="hljs-keyword">select</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">from</span> project;<br><br># 退出数据库<br>exit<br></code></pre></td></tr></table></figure><h5 id="13-9-3-创建实例以及项目"><a href="#13-9-3-创建实例以及项目" class="headerlink" title="13.9.3 创建实例以及项目"></a>13.9.3 创建实例以及项目</h5><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">创建openstack默认实例【example项目】,实例描述为【An Example Domain】</span><br>openstack domain create --description "An Example Domain" example<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">在project表中,创建一个名为【service】的项目,项目描述为【Service Project】,项目默认域为【default】</span><br>openstack project create --domain default --description "Service Project" service<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">在project表中,创建一个名为【myproject】的项目,项目描述为【Demo Project】,项目默认域为【default】</span><br>openstack project create --domain default --description "Demo Project" myproject<br></code></pre></td></tr></table></figure><h5 id="13-9-4-验证实例和项目是否创建成功"><a href="#13-9-4-验证实例和项目是否创建成功" class="headerlink" title="13.9.4 验证实例和项目是否创建成功"></a>13.9.4 验证实例和项目是否创建成功</h5><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs sql"># 进入数据库查看数据<br>mysql <span class="hljs-operator">-</span>u root <span class="hljs-operator">-</span>p<br><br># 切换到keystone数据库<br>use keystone;<br><br># 查看keystone数据库中project表的内容【这时候应该有<span class="hljs-number">6</span>行数据,没有则“创建实例和项目”出错】<br><span class="hljs-keyword">select</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">from</span> project;<br><br><br></code></pre></td></tr></table></figure><h5 id="13-9-5-查看初始用户表和角色表的内容"><a href="#13-9-5-查看初始用户表和角色表的内容" class="headerlink" title="13.9.5 查看初始用户表和角色表的内容"></a>13.9.5 查看初始用户表和角色表的内容</h5><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs sql"># 查看local_user表的初始内容【这时应该有<span class="hljs-number">1</span>行数据,没有则“同步数据库”失败】<br><span class="hljs-keyword">select</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">from</span> local_user;<br><br># 查看role表的初始内容【这时应该有<span class="hljs-number">3</span>行数据,没有则“同步数据库”失败】<br><span class="hljs-keyword">select</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">from</span> role;<br><br># 退出数据库<br>exit<br></code></pre></td></tr></table></figure><h5 id="13-9-6-创建用户以及角色"><a href="#13-9-6-创建用户以及角色" class="headerlink" title="13.9.6 创建用户以及角色"></a>13.9.6 创建用户以及角色</h5><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">在local_user表中,创建一个用户名为【myuser】,用户默认域为【default】,这里是交互式输入密码</span><br>openstack user create --domain default --password-prompt myuser<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">在role表中,创建一个名为【myrole】的角色</span><br>openstack role create myrole<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">将【myrole】角色添加到【myuser】用户组中,并属于【myproject】项目</span><br>openstack role add --project myproject --user myuser myrole<br></code></pre></td></tr></table></figure><h5 id="13-9-7-验证用户以及角色是否创建成功"><a href="#13-9-7-验证用户以及角色是否创建成功" class="headerlink" title="13.9.7 验证用户以及角色是否创建成功"></a>13.9.7 验证用户以及角色是否创建成功</h5><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs sql"># 登录数据库<br>mysql <span class="hljs-operator">-</span>u root <span class="hljs-operator">-</span>p<br><br># 切换到keystone数据库<br>use keystone;<br><br># 查看local_user表的初始内容【这时应该有<span class="hljs-number">2</span>行数据,没有则“创建用户”失败】<br><span class="hljs-keyword">select</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">from</span> local_user;<br><br># 查看role表的初始内容【这时应该有<span class="hljs-number">4</span>行数据,没有则“创建角色”失败】<br><span class="hljs-keyword">select</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">from</span> role;<br><br># 退出数据库<br>exit<br></code></pre></td></tr></table></figure><h4 id="13-10-获取认证token"><a href="#13-10-获取认证token" class="headerlink" title="13.10 获取认证token"></a>13.10 获取认证token</h4><blockquote><p>以下的URL是指在“创建认证实体服务”中的“外部通信URL”</p></blockquote><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">去除环境变量</span><br>unset OS_AUTH_URL OS_PASSWORD<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">管理员用户获取认证token</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">管理员密码,是在“创建认证实体服务”中的“认证实体密码”</span><br>openstack --os-auth-url http://controller:5000/v3 \<br>--os-project-domain-name Default \<br>--os-user-domain-name Default \<br>--os-project-name admin \<br>--os-username admin token issue<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">普通用户myuser获取认证toekn</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">普通用户密码,是在“创建用户以及角色”时指定的</span><br>openstack --os-auth-url http://controller:5000/v3 \<br>--os-project-domain-name Default \<br>--os-user-domain-name Default \<br>--os-project-name myproject \<br>--os-username myuser token issue<br></code></pre></td></tr></table></figure><h4 id="13-11-使用openstack客户端环境脚本"><a href="#13-11-使用openstack客户端环境脚本" class="headerlink" title="13.11 使用openstack客户端环境脚本"></a>13.11 使用openstack客户端环境脚本</h4><ul><li>这样可以简化操作,不用每次都获取认证token</li></ul><blockquote><p>该脚本的位置和名称没有要求,只需要便于自己记忆即可;为了方便,这里统一放在<code>/opt</code>这个目录下</p></blockquote><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">添加管理员admin的openstack客户端环境脚本</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">根据自己的配置进行更改,随后复制粘贴即可</span><br><br>cat > /opt/adminrc-openstack << "EOF"<br>export OS_PROJECT_DOMAIN_NAME=Default<br>export OS_USER_DOMAIN_NAME=Default<br>export OS_PROJECT_NAME=admin<br>export OS_USERNAME=admin<br>export OS_PASSWORD=kst123456<br>export OS_AUTH_URL=http://controller:5000/v3<br>export OS_IDENTITY_API_VERSION=3<br>export OS_IMAGE_API_VERSION=2<br>EOF<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">添加普通用户myuser的openstack客户端环境脚本</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">根据自己的配置进行更改,随后复制粘贴即可</span><br><br>cat > /opt/myuser-openstack << "EOF"<br>export OS_PROJECT_DOMAIN_NAME=Default<br>export OS_USER_DOMAIN_NAME=Default<br>export OS_PROJECT_NAME=myproject<br>export OS_USERNAME=myuser<br>export OS_PASSWORD=123456<br>export OS_AUTH_URL=http://controller:5000/v3<br>export OS_IDENTITY_API_VERSION=3<br>export OS_IMAGE_API_VERSION=2<br>EOF<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">使用管理员环境脚本</span><br>source /opt/adminrc-openstack<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">验证脚本是否生效【列出当前用户列表】</span><br>openstack user list<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">使用普通用户环境脚本</span><br>source /opt/myuser-openstack<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">验证脚本是否生效【查看当前用户的“token”】</span><br>openstack token issue<br></code></pre></td></tr></table></figure><h3 id="14-安装配置glance镜像服务-仅在controller节点"><a href="#14-安装配置glance镜像服务-仅在controller节点" class="headerlink" title="14. 安装配置glance镜像服务(仅在controller节点)"></a>14. 安装配置glance镜像服务(仅在controller节点)</h3><h4 id="14-1-创建glance数据库"><a href="#14-1-创建glance数据库" class="headerlink" title="14.1 创建glance数据库"></a>14.1 创建glance数据库</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">进入数据库</span><br>mysql -u root -p<br></code></pre></td></tr></table></figure><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><code class="hljs sql"># 创建glance数据库<br><span class="hljs-keyword">CREATE</span> DATABASE glance;<br><br># 创建glance用户并赋予“<span class="hljs-number">123456</span>”密码给该用户<br># 最后赋予glance数据库的所有权限给该用户<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> glance.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'glance'</span>@<span class="hljs-string">'localhost'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br><br># 给glance用户远程操作glance数据库的权限<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> glance.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'glance'</span>@<span class="hljs-string">'%'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br><br># glance用户使用“mysql_native_password”认证插件进行认证<br><span class="hljs-keyword">UPDATE</span> mysql.user <span class="hljs-keyword">SET</span> authentication_string <span class="hljs-operator">=</span> PASSWORD(<span class="hljs-string">'123456'</span>), plugin <span class="hljs-operator">=</span> <span class="hljs-string">'mysql_native_password'</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">User</span> <span class="hljs-operator">=</span> <span class="hljs-string">'glance'</span> <span class="hljs-keyword">AND</span> Host <span class="hljs-operator">=</span> <span class="hljs-string">'%'</span>;<br><br># 刷新权限<br>flush privileges;<br><br># 退出数据库<br>exit<br></code></pre></td></tr></table></figure><h4 id="14-2-在keystone上注册glance服务"><a href="#14-2-在keystone上注册glance服务" class="headerlink" title="14.2 在keystone上注册glance服务"></a>14.2 在keystone上注册glance服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">切换为keystone管理员的系统环境</span><br>source /opt/adminrc-openstack<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">在local_user表中,创建一个用户名为【glance】,用户默认域为【default】,这里是交互式输入密码</span><br>openstack user create --domain default --password-prompt glance<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">将【glance】用户添加到【service】项目的【admin】角色组</span><br>openstack role add --project service --user glance admin<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建服务实体名为【glance】,实体描述为【OpenStack Image】,服务实体类型为【image】</span><br>openstack service create --name glance --description "OpenStack Image" image<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">验证glance服务实体是否创建成功【列出当前用户列表】</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">目前应该有2行数据,分别是keystone和glance的数据,若没有,重新进行操作</span><br>openstack service list<br></code></pre></td></tr></table></figure><h4 id="14-3-在keystone上创建glance服务的API端点"><a href="#14-3-在keystone上创建glance服务的API端点" class="headerlink" title="14.3 在keystone上创建glance服务的API端点"></a>14.3 在keystone上创建glance服务的API端点</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">创建外部通信的URL端点</span><br>openstack endpoint create --region RegionOne image public http://controller:9292<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建内部通信的URL端点</span><br>openstack endpoint create --region RegionOne image internal http://controller:9292<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建管理员通信的URL端点</span><br>openstack endpoint create --region RegionOne image admin http://controller:9292<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">列出创建的端点列表</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">这是应该有6行数据,3条属于keystone服务的端点,另外3条属于glance服务的端点</span><br>openstack endpoint list<br></code></pre></td></tr></table></figure><h4 id="14-4-安装glance镜像服务"><a href="#14-4-安装glance镜像服务" class="headerlink" title="14.4 安装glance镜像服务"></a>14.4 安装glance镜像服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs shell">yum install openstack-glance -y <br></code></pre></td></tr></table></figure><h4 id="14-5-配置glance的api文件"><a href="#14-5-配置glance的api文件" class="headerlink" title="14.5 配置glance的api文件"></a>14.5 配置glance的api文件</h4><blockquote><p>这里的内容需要根据自己配置进行更改</p></blockquote><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">修改glance服务的mysql数据库连接用户名以及密码</span><br>openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:123456@controller/glance<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone的身份验证端点URI</span><br>openstack-config --set /etc/glance/glance-api.conf keystone_authtoken www_authenticate_uri http://controller:5000<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在Keystone的身份验证服务的实际 URL</span><br>openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://controller:5000<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务使用memcached作为 Keystone 身份验证服务的缓存后端</span><br>openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers controller:11211<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone身份认证服务使用的认证类型为密码</span><br>openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_type password<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone服务里的项目默认域</span><br>openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name Default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone服务里的用户默认域</span><br>openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name Default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone服务里属于service项目</span><br>openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone服务里的默认用户为glance</span><br>openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone服务里默认用户glance的默认密码为<span class="hljs-string">"123456"</span></span><br>openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password 123456<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务与Keystone身份验证服务能够集成</span><br>openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务能够使用的存储后端【本地文件系统和http】</span><br>openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务的默认存储后端为【本地文件系统】</span><br>openstack-config --set /etc/glance/glance-api.conf glance_store default_store file<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务的默认文件系统存储位置在<span class="hljs-string">"/var/lib/glance/images"</span></span><br>openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/<br><br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>grep '^[a-z]' /etc/glance/glance-api.conf<br></code></pre></td></tr></table></figure><h4 id="14-6-配置glance的注册文件"><a href="#14-6-配置glance的注册文件" class="headerlink" title="14.6 配置glance的注册文件"></a>14.6 配置glance的注册文件</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务连接mysql数据库的用户名以及密码</span><br>openstack-config --set /etc/glance/glance-registry.conf database connection mysql+pymysql://glance:123456@controller/glance<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone的身份验证端点URI</span><br>openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken www_authenticate_uri http://controller:5000<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在Keystone的身份验证服务的实际 URL</span><br>openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://controller:5000<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务使用memcached作为 Keystone 身份验证服务的缓存后端</span><br>openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken memcached_servers controller:11211<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone身份认证服务使用的认证类型为密码</span><br>openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_type password<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone服务里的项目默认域</span><br>openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_name Default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone服务里的用户默认域</span><br>openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_name Default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone服务里属于service项目</span><br>openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name service<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone服务里的默认用户为glance</span><br>openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username glance<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务在keystone服务里默认用户glance的默认密码为<span class="hljs-string">"123456"</span></span><br>openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password 123456<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置glance服务与Keystone身份验证服务能够集成</span><br>openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>grep '^[a-z]' /etc/glance/glance-registry.conf<br></code></pre></td></tr></table></figure><h4 id="14-7-同步数据库"><a href="#14-7-同步数据库" class="headerlink" title="14.7 同步数据库"></a>14.7 同步数据库</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">同步glance服务的数据到数据库</span><br>su -s /bin/sh -c "glance-manage db_sync" glance<br></code></pre></td></tr></table></figure><h4 id="14-8-查看数据库"><a href="#14-8-查看数据库" class="headerlink" title="14.8 查看数据库"></a>14.8 查看数据库</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">登录数据库</span><br>mysql -u root -p<br></code></pre></td></tr></table></figure><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs sql"># 切换glance数据库<br>use glance;<br><br># 查看glance数据库中的表<br># 此时应该有<span class="hljs-number">15</span>行的数据,若没有,则同步数据库失败,需要重新查看配置再执行<br><span class="hljs-keyword">show</span> tables;<br><br># 退出数据库<br>exit<br></code></pre></td></tr></table></figure><h4 id="14-9-启动glance服务"><a href="#14-9-启动glance服务" class="headerlink" title="14.9 启动glance服务"></a>14.9 启动glance服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">启动glance的api服务以及glance的注册机服务</span><br>systemctl start openstack-glance-api openstack-glance-registry<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看两项服务的状态</span><br>systemctl status openstack-glance-api openstack-glance-registry<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_">#</span><span class="language-bash">让两项服务开机自启动</span><br>systemctl enable openstack-glance-api openstack-glance-registry<br></code></pre></td></tr></table></figure><h4 id="14-10-查看镜像"><a href="#14-10-查看镜像" class="headerlink" title="14.10 查看镜像"></a>14.10 查看镜像</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看已有镜像</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">默认安装完不存在镜像,需要从网上进行下载</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">镜像存放地址位于“/var/lib/glance/images”</span><br>openstack image list<br></code></pre></td></tr></table></figure><h3 id="15-安装配置nova计算和placement资源监控服务-controller节点"><a href="#15-安装配置nova计算和placement资源监控服务-controller节点" class="headerlink" title="15. 安装配置nova计算和placement资源监控服务(controller节点)"></a>15. 安装配置nova计算和placement资源监控服务(controller节点)</h3><h4 id="15-1-创建nova数据库"><a href="#15-1-创建nova数据库" class="headerlink" title="15.1 创建nova数据库"></a>15.1 创建nova数据库</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">登录数据库</span><br>mysql -u root -p<br></code></pre></td></tr></table></figure><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs sql"># 创建nova_api数据库<br><span class="hljs-keyword">CREATE</span> DATABASE nova_api;<br># 创建nova数据库 <br><span class="hljs-keyword">CREATE</span> DATABASE nova;<br># 创建nova_cell0数据库<br><span class="hljs-keyword">CREATE</span> DATABASE nova_cell0;<br><br># 创建placement数据库<br><span class="hljs-keyword">CREATE</span> DATABASE placement;<br></code></pre></td></tr></table></figure><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><code class="hljs sql"># 创建nova用户并赋予“<span class="hljs-number">123456</span>”密码给该用户,最后赋予nova_api数据库的所有权限给该用户<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> nova_api.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'nova'</span>@<span class="hljs-string">'localhost'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br># 给nova用户远程操作nova_api数据库的权限<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> nova_api.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'nova'</span>@<span class="hljs-string">'%'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br># 创建nova用户并赋予“<span class="hljs-number">123456</span>”密码给该用户,最后赋予nova数据库的所有权限给该用户<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> nova.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'nova'</span>@<span class="hljs-string">'localhost'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br># 给nova用户远程操作nova数据库的权限<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> nova.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'nova'</span>@<span class="hljs-string">'%'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br># 创建nova用户并赋予“<span class="hljs-number">123456</span>”密码给该用户,最后赋予nova_cell0数据库的所有权限给该用户<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> nova_cell0.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'nova'</span>@<span class="hljs-string">'localhost'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br># 给nova用户远程操作nova_cell0数据库的权限<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> nova_cell0.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'nova'</span>@<span class="hljs-string">'%'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br># 创建placement用户并赋予“<span class="hljs-number">123456</span>”密码给该用户,最后赋予placement数据库的所有权限给该用户<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> placement.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'placement'</span>@<span class="hljs-string">'localhost'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br># 给placement用户远程操作placement数据库的权限<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> placement.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'placement'</span>@<span class="hljs-string">'%'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br><br># nova用户使用“mysql_native_password”认证插件进行认证<br><span class="hljs-keyword">UPDATE</span> mysql.user <span class="hljs-keyword">SET</span> authentication_string <span class="hljs-operator">=</span> PASSWORD(<span class="hljs-string">'123456'</span>), plugin <span class="hljs-operator">=</span> <span class="hljs-string">'mysql_native_password'</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">User</span> <span class="hljs-operator">=</span> <span class="hljs-string">'nova'</span> <span class="hljs-keyword">AND</span> Host <span class="hljs-operator">=</span> <span class="hljs-string">'%'</span>;<br># placement用户使用“mysql_native_password”认证插件进行认证<br><span class="hljs-keyword">UPDATE</span> mysql.user <span class="hljs-keyword">SET</span> authentication_string <span class="hljs-operator">=</span> PASSWORD(<span class="hljs-string">'123456'</span>), plugin <span class="hljs-operator">=</span> <span class="hljs-string">'mysql_native_password'</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">User</span> <span class="hljs-operator">=</span> <span class="hljs-string">'placement'</span> <span class="hljs-keyword">AND</span> Host <span class="hljs-operator">=</span> <span class="hljs-string">'%'</span>;<br><br># 刷新权限<br>flush privileges;<br><br># 退出数据库<br>exit<br><br><br></code></pre></td></tr></table></figure><h4 id="15-2-在keystone上注册nova服务"><a href="#15-2-在keystone上注册nova服务" class="headerlink" title="15.2 在keystone上注册nova服务"></a>15.2 在keystone上注册nova服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">切换为keystone管理员的系统环境</span><br>source /opt/adminrc-openstack<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">在local_user表中,创建一个用户名为【nova】,用户默认域为【default】,这里是交互式输入密码</span><br>openstack user create --domain default --password-prompt nova<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">将【nova】用户添加到【service】项目的【admin】角色组</span><br>openstack role add --project service --user nova admin<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建服务实体名为【nova】,实体描述为【OpenStack Compute】,服务实体类型为【compute】</span><br>openstack service create --name nova --description "OpenStack Compute" compute<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">验证nova服务实体是否创建成功【列出当前用户列表】</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">目前应该有3行数据,分别是keystone、glance和nova的数据,若没有,重新进行操作</span><br>openstack service list<br></code></pre></td></tr></table></figure><h4 id="15-3-在keystone上创建nova计算服务端点"><a href="#15-3-在keystone上创建nova计算服务端点" class="headerlink" title="15.3 在keystone上创建nova计算服务端点"></a>15.3 在keystone上创建nova计算服务端点</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">创建外部通信的URL端点</span><br>openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建内部通信的URL端点</span><br>openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建管理员通信的URL端点</span><br>openstack endpoint create --region RegionOne compute admin http://controller:8774.v2.1<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">列出创建的端点列表</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">这是应该有9行数据,3条属于keystone服务的端点</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">3条属于glance服务的端点,另外3条属于nova服务</span><br>openstack endpoint list<br></code></pre></td></tr></table></figure><h4 id="15-4-在keystone上注册placement服务"><a href="#15-4-在keystone上注册placement服务" class="headerlink" title="15.4 在keystone上注册placement服务"></a>15.4 在keystone上注册placement服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">在local_user表中,创建一个用户名为【placement】,用户默认域为【default】,这里是交互式输入密码</span><br>openstack user create --domain default --password-prompt placement<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">将【placement】用户添加到【service】项目的【admin】角色组</span><br>openstack role add --project service --user placement admin<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建服务实体名为【placement】,实体描述为【Placement API】,服务实体类型为【placement】</span><br>openstack service create --name placement --description "Placement API" placement<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">验证placement服务实体是否创建成功【列出当前用户列表】</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">目前应该有4行数据,分别是keystone、glance、nova和placement的数据,若没有,重新进行操作</span><br>openstack service list<br></code></pre></td></tr></table></figure><h4 id="15-5-在keystone上创建placement资源服务端点"><a href="#15-5-在keystone上创建placement资源服务端点" class="headerlink" title="15.5 在keystone上创建placement资源服务端点"></a>15.5 在keystone上创建placement资源服务端点</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">创建外部通信的URL端点</span><br>openstack endpoint create --region RegionOne placement public http://controller:8778<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建内部通信的URL端点</span><br>openstack endpoint create --region RegionOne placement internal http://controller:8778<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建管理员通信的URL端点</span><br>openstack endpoint create --region RegionOne placement admin http://controller:8778<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">列出创建的端点列表</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">这是应该有12行数据,3条属于keystone服务的端点</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">3条属于glance服务的端点,3条属于nova服务,还有3条属于placement服务</span><br>openstack endpoint list<br></code></pre></td></tr></table></figure><h4 id="15-5-安装nova和placement服务"><a href="#15-5-安装nova和placement服务" class="headerlink" title="15.5 安装nova和placement服务"></a>15.5 安装nova和placement服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs shell">yum install openstack-nova-api openstack-nova-conductor \<br>openstack-nova-console openstack-nova-novncproxy \<br>openstack-nova-scheduler openstack-nova-placement-api -y <br></code></pre></td></tr></table></figure><h4 id="15-6-配置nova以及placement的文件"><a href="#15-6-配置nova以及placement的文件" class="headerlink" title="15.6 配置nova以及placement的文件"></a>15.6 配置nova以及placement的文件</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务启用Compute API和Metadata API</span><br>openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务主机的IP地址【即controller节点的IP地址】</span><br>openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.66.6<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务默认使用neutron服务</span><br>openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用<span class="hljs-string">"nova.virt.firewall.NoopFirewallDriver"</span>防火墙驱动</span><br>openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用的rabbitmq服务器账户密码</span><br>openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:123456@controller<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务连接nova_api数据库的用户名以及密码</span><br>openstack-config --set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:123456@controller/nova_api<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务连接nova数据库的用户名以及密码</span><br>openstack-config --set /etc/nova/nova.conf database connection mysql+pymysql://nova:123456@controller/nova<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务连接placement数据库的用户名以及密码</span><br>openstack-config --set /etc/nova/nova.conf placement_database connection mysql+pymysql://placement:123456@controller/placement<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务的api认证策略是使用keystone服务</span><br>openstack-config --set /etc/nova/nova.conf api auth_strategy keystone <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务的认证URL</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller:5000/v3<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用memcached服务的服务器</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用keystone认证服务的类型是密码</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务在keystone服务里的默认项目域</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务在keystone服务里的普通用户默认域</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务在keystone服务里的项目是属于service</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务在keystone服务里使用的默认账户是nova</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务在keystone服务里使用的nova账户的密码</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken password 123456<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用vnc远程连接服务</span><br>openstack-config --set /etc/nova/nova.conf vnc enabled true<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用vnc远程服务的监听地址</span><br>openstack-config --set /etc/nova/nova.conf vnc server_listen '$my_ip'<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用vnc远程服务的代理客户端地址</span><br>openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address '$my_ip'<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用glance服务的地址</span><br>openstack-config --set /etc/nova/nova.conf glance api_servers http://controller:9292<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务的锁路径</span><br>openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务应该与哪个区域的 Placement 服务进行通信</span><br>openstack-config --set /etc/nova/nova.conf placement region_name RegionOne<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务的默认项目域</span><br>openstack-config --set /etc/nova/nova.conf placement project_domain_name Default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务属于service项目</span><br>openstack-config --set /etc/nova/nova.conf placement project_name service<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务在keystone服务的认证类型是密码</span><br>openstack-config --set /etc/nova/nova.conf placement auth_type password<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务的普通用户默认域</span><br>openstack-config --set /etc/nova/nova.conf placement user_domain_name Default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务的认证URL</span><br>openstack-config --set /etc/nova/nova.conf placement auth_url http://controller:5000/v3<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务使用的默认用户名是placement</span><br>openstack-config --set /etc/nova/nova.conf placement username placement<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务使用placement用户的密码</span><br>openstack-config --set /etc/nova/nova.conf placement password 123456<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务中检查主机列表更新的频率【这里是每5分钟-300秒检查一次】</span><br>openstack-config --set /etc/nova/nova.conf scheduler discover_hosts_in_cells_interval 300<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>grep '^[a-z]' /etc/nova/nova.conf<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置novnc可使用的协议</span><br>sed -i "231s|protocols|['binary','base64']|" /usr/share/novnc/core/websock.js<br></code></pre></td></tr></table></figure><h4 id="15-7-配置httpd服务"><a href="#15-7-配置httpd服务" class="headerlink" title="15.7 配置httpd服务"></a>15.7 配置httpd服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">httpd配置文件增加内容</span><br>cat >> /etc/httpd/conf.d/00-nova-placement-api.conf << "EOF"<br><br><Directory /usr/bin><br> <IfVersion >= 2.4><br> Require all granted<br> </IfVersion><br> <IfVersion < 2.4><br> Order allow,deny<br> Allow from all<br> </IfVersion><br></Directory><br>EOF<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">重启httpd服务</span><br>systemctl restart httpd<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看httpd服务的状态</span><br>systemctl status httpd<br></code></pre></td></tr></table></figure><h4 id="15-8-同步nova以及placement数据库"><a href="#15-8-同步nova以及placement数据库" class="headerlink" title="15.8 同步nova以及placement数据库"></a>15.8 同步nova以及placement数据库</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">初始化nova和placement数据库</span><br>su -s /bin/sh -c "nova-manage api_db sync" nova<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">注册cell0数据库</span><br>su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建cell1单元</span><br>su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">注册nova数据库</span><br>su -s /bin/sh -c "nova-manage db sync" nova<br></code></pre></td></tr></table></figure><h4 id="15-9-验证数据库以及服务注册"><a href="#15-9-验证数据库以及服务注册" class="headerlink" title="15.9 验证数据库以及服务注册"></a>15.9 验证数据库以及服务注册</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">验证noca_cell0和cell1是否注册成功</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">此时应该出现2行数据,没有则注册不成功</span><br>su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">登录数据库</span><br>mysql -u root -p<br></code></pre></td></tr></table></figure><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><code class="hljs sql"># 切换到nova_api数据库<br>use nova_api;<br><br># 查看nova_api数据库的表<br># 这里应该有<span class="hljs-number">32</span>行数据<br><span class="hljs-keyword">show</span> tables;<br><br># 切换到placement数据库<br>use placement;<br><br># 查看placement数据库的表<br># 这里同样应该有<span class="hljs-number">32</span>行数据<br><span class="hljs-keyword">show</span> tables;<br><br># 切换到nova_cell0数据库<br>use nova_cell0;<br><br># 查看nova_cell0数据库的表<br># 这里应该有<span class="hljs-number">110</span>行数据<br><span class="hljs-keyword">show</span> tables;<br><br># 切换到nova数据库<br>use nova;<br><br># 查看nova数据库的表<br># 这里应该有<span class="hljs-number">110</span>行数据<br><span class="hljs-keyword">show</span> tables;<br><br># 退出数据库<br>exit;<br></code></pre></td></tr></table></figure><h4 id="15-10-启动服务并设置开机自启动"><a href="#15-10-启动服务并设置开机自启动" class="headerlink" title="15.10 启动服务并设置开机自启动"></a>15.10 启动服务并设置开机自启动</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">启动nova有关服务</span><br>systemctl start openstack-nova-api openstack-nova-consoleauth \<br>openstack-nova-scheduler openstack-nova-conductor \<br>openstack-nova-novncproxy<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看nova有关服务的状态</span><br>systemctl status openstack-nova-api openstack-nova-consoleauth \<br>openstack-nova-scheduler openstack-nova-conductor \<br>openstack-nova-novncproxy<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">设置nova有关服务开机自启动</span><br>systemctl enable openstack-nova-api openstack-nova-consoleauth \<br>openstack-nova-scheduler openstack-nova-conductor \<br>openstack-nova-novncproxy<br></code></pre></td></tr></table></figure><h3 id="16-安装配置nova计算服务-computer节点"><a href="#16-安装配置nova计算服务-computer节点" class="headerlink" title="16. 安装配置nova计算服务(computer节点)"></a>16. 安装配置nova计算服务(computer节点)</h3><blockquote><p>以下内容均在computer节点上执行!!!</p></blockquote><h4 id="16-1-安装nova服务"><a href="#16-1-安装nova服务" class="headerlink" title="16.1 安装nova服务"></a>16.1 安装nova服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">在computer节点上执行</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">安装nova计算服务</span><br>yum install openstack-nova-compute -y<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">安装快速修改配置文件工具</span><br>yum install openstack-utils -y<br></code></pre></td></tr></table></figure><h4 id="16-2-配置nova服务"><a href="#16-2-配置nova服务" class="headerlink" title="16.2 配置nova服务"></a>16.2 配置nova服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务启用Compute API和Metadata API</span><br>openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务主机的IP地址【即computer节点的IP地址】</span><br>openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.66.7<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务默认使用neutron服务</span><br>openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用<span class="hljs-string">"nova.virt.firewall.NoopFirewallDriver"</span>防火墙驱动</span><br>openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用的rabbitmq服务器账户密码</span><br>openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:123456@controller<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务的api认证策略是使用keystone服务</span><br>openstack-config --set /etc/nova/nova.conf api auth_strategy keystone <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务的认证URL</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller:5000/v3<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用memcached服务的服务器</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用keystone认证服务的类型是密码</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务在keystone服务里的默认项目域</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务在keystone服务里的普通用户默认域</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务在keystone服务里的项目是属于service</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务在keystone服务里使用的默认账户是nova</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务在keystone服务里使用的nova账户的密码</span><br>openstack-config --set /etc/nova/nova.conf keystone_authtoken password 123456<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用vnc远程连接服务</span><br>openstack-config --set /etc/nova/nova.conf vnc enabled true<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用vnc远程服务的监听地址</span><br>openstack-config --set /etc/nova/nova.conf vnc server_listen 0.0.0.0<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用vnc远程服务的代理客户端地址</span><br>openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address '$my_ip'<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用novnc远程服务的基本URL</span><br>openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://controller:6080/vnc_auto.html<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务使用glance服务的地址</span><br>openstack-config --set /etc/nova/nova.conf glance api_servers http://controller:9292<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务的锁路径</span><br>openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务应该与哪个区域的 Placement 服务进行通信</span><br>openstack-config --set /etc/nova/nova.conf placement region_name RegionOne<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务的默认项目域</span><br>openstack-config --set /etc/nova/nova.conf placement project_domain_name Default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务属于service项目</span><br>openstack-config --set /etc/nova/nova.conf placement project_name service<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务在keystone服务的认证类型是密码</span><br>openstack-config --set /etc/nova/nova.conf placement auth_type password<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务的普通用户默认域</span><br>openstack-config --set /etc/nova/nova.conf placement user_domain_name Default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务的认证URL</span><br>openstack-config --set /etc/nova/nova.conf placement auth_url http://controller:5000/v3<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务使用的默认用户名是placement</span><br>openstack-config --set /etc/nova/nova.conf placement username placement<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置placement服务使用placement用户的密码</span><br>openstack-config --set /etc/nova/nova.conf placement password 123456<br><br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>grep '^[a-z]' /etc/nova/nova.conf<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看计算节点是否支持虚拟化</span><br>egrep -c '(vmx|svm)' /proc/cpuinfo<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">若输出除“0”以外的任何数,则无需操作</span><br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">!!!!!若输出“0”,则代表不支持硬件加速,需要以下配置!!!!!!</span><br>openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu<br><br><br></code></pre></td></tr></table></figure><h4 id="16-3-启动nova以及依赖服务"><a href="#16-3-启动nova以及依赖服务" class="headerlink" title="16.3 启动nova以及依赖服务"></a>16.3 启动nova以及依赖服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">启动nova以及依赖服务</span><br>systemctl start libvirtd openstack-nova-compute<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看nova以及依赖服务的状态</span><br>systemctl status libvirtd openstack-nova-compute<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">让nova以及依赖服务开机自启动</span><br>systemctl enable libvirtd openstack-nova-compute<br></code></pre></td></tr></table></figure><h4 id="16-4-在controller节点查看节点信息"><a href="#16-4-在controller节点查看节点信息" class="headerlink" title="16.4 在controller节点查看节点信息"></a>16.4 在controller节点查看节点信息</h4><blockquote><p>这一步在controller节点上执行</p></blockquote><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">让管理员环境变量生效</span><br>source /opt/adminrc-openstack<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看数据库中是否有新的计算节点信息</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置了(5分钟——300秒)自动发现服务</span><br>openstack compute service list --service nova-compute<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">这里可以手动发现计算节点</span><br>su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看目前controller节点所有服务的状态</span><br>nova-status upgrade check<br></code></pre></td></tr></table></figure><h3 id="17-安装配置neutron网络服务-controller节点"><a href="#17-安装配置neutron网络服务-controller节点" class="headerlink" title="17. 安装配置neutron网络服务(controller节点)"></a>17. 安装配置neutron网络服务(controller节点)</h3><h4 id="17-1-创建neutron数据库"><a href="#17-1-创建neutron数据库" class="headerlink" title="17.1 创建neutron数据库"></a>17.1 创建neutron数据库</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">进入数据库</span><br>mysql -u root -p <br></code></pre></td></tr></table></figure><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs sql"># 创建neutron数据库<br><span class="hljs-keyword">CREATE</span> DATABASE neutron;<br><br># 创建neutron用户并赋予“<span class="hljs-number">123456</span>”密码给该用户,最后赋予neutron数据库的所有权限给该用户<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> neutron.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'neutron'</span>@<span class="hljs-string">'localhost'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br><br># 给neutron用户远程操作neutron数据库的权限<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> neutron.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'neutron'</span>@<span class="hljs-string">'%'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'123456'</span>;<br><br># neutron用户使用“mysql_native_password”认证插件进行认证<br><span class="hljs-keyword">UPDATE</span> mysql.user <span class="hljs-keyword">SET</span> authentication_string <span class="hljs-operator">=</span> PASSWORD(<span class="hljs-string">'123456'</span>), plugin <span class="hljs-operator">=</span> <span class="hljs-string">'mysql_native_password'</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">User</span> <span class="hljs-operator">=</span> <span class="hljs-string">'neutron'</span> <span class="hljs-keyword">AND</span> Host <span class="hljs-operator">=</span> <span class="hljs-string">'%'</span>;<br><br># 刷新数据库权限<br>flush privileges;<br><br># 退出数据库<br>exit<br></code></pre></td></tr></table></figure><h4 id="17-2-在keystone上注册neutron服务"><a href="#17-2-在keystone上注册neutron服务" class="headerlink" title="17.2 在keystone上注册neutron服务"></a>17.2 在keystone上注册neutron服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">切换为keystone管理员的系统环境</span><br>source /opt/adminrc-openstack<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">在local_user表中,创建一个用户名为【neutron】,用户默认域为【default】,这里是交互式输入密码</span><br>openstack user create --domain default --password-prompt neutron<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">将【neutron】用户添加到【service】项目的【admin】角色组</span><br>openstack role add --project service --user neutron admin<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建服务实体名为【neutron】,实体描述为【OpenStack Networking】,服务实体类型为【network】</span><br>openstack service create --name neutron --description "OpenStack Networking" network<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">验证nova服务实体是否创建成功【列出当前用户列表】</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">目前应该有5行数据,分别是keystone、glance、nova、placement和neutron的数据,若没有,重新进行操作</span><br>openstack service list<br></code></pre></td></tr></table></figure><h4 id="17-3-在keystone上创建neutron服务端点"><a href="#17-3-在keystone上创建neutron服务端点" class="headerlink" title="17.3 在keystone上创建neutron服务端点"></a>17.3 在keystone上创建neutron服务端点</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">创建外部通信的URL端点</span><br>openstack endpoint create --region RegionOne network public http://controller:9696<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建内部通信的URL端点</span><br>openstack endpoint create --region RegionOne network internal http://controller:9696<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建管理员通信的URL端点</span><br>openstack endpoint create --region RegionOne network admin http://controller:9696<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">列出创建的端点列表</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">这是应该有15行数据,3条属于keystone服务的端点</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">3条属于glance服务,3条属于nova服务,3条属于placement服务</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">另外3条属于neutron服务</span><br>openstack endpoint list<br></code></pre></td></tr></table></figure><h4 id="17-4-安装neutron网络服务"><a href="#17-4-安装neutron网络服务" class="headerlink" title="17.4 安装neutron网络服务"></a>17.4 安装neutron网络服务</h4><blockquote><p>这里有两种安装方式:<code>Provider networks</code>,<code>Self-service networks</code></p><ul><li><p>方式一:通常依赖物理网络来实现三层路由功能;仅支持Flat和VLAN两种网络类型</p></li><li><p>方式二:网络完全虚拟化,不依赖于物理网络设备,可以直接使用三层路由功能;支持Flat、VLAN、VXLAN和GRE等多种网络类型;从某种意义来说<code>方式二</code>是基于<code>方式一</code>的基础上搭建的</p></li></ul></blockquote><ul><li>这里我选择<code>方式二</code>搭建</li></ul><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">安装neutron以及依赖服务</span><br>yum install openstack-neutron openstack-neutron-ml2 \<br>openstack-neutron-linuxbridge ebtables -y <br><br><br></code></pre></td></tr></table></figure><h4 id="17-5-配置neutron服务的文件"><a href="#17-5-配置neutron服务的文件" class="headerlink" title="17.5 配置neutron服务的文件"></a>17.5 配置neutron服务的文件</h4><ul><li>配置neutron服务</li></ul><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务连接neutron数据库的用户名以及密码</span><br>openstack-config --set /etc/neutron/neutron.conf database connection mysql+pymysql://neutron:123456@controller/neutron <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的核心插件是ml2</span><br>openstack-config --set /etc/neutron/neutron.conf DEFAULT core_plugin ml2 <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务启用router插件</span><br>openstack-config --set /etc/neutron/neutron.conf DEFAULT service_plugins router<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的子网可以使用重叠的IP地址范围</span><br>openstack-config --set /etc/neutron/neutron.conf DEFAULT allow_overlapping_ips true<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用rabbitmq服务器的地址</span><br>openstack-config --set /etc/neutron/neutron.conf DEFAULT transport_url rabbit://openstack:123456@controller<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的认证策略是keystone</span><br>openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的公共认证URL</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken www_authenticate_uri http://controller:5000<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的认证URL</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller:5000<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用memcached服务器的地址</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller:11211<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的认证类型</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务默认的项目域</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的默认普通用户域</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置nova服务在keystone服务里的项目是属于service</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务在keystone服务里使用的默认账户是neutron</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务在keystone服务里使用neutron账户的密码</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password 123456 <br><span class="hljs-meta prompt_"># </span><span class="language-bash">启用neutron服务的端口状态发生变化时,将会发送通知给nova服务</span><br>openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_status_changes true<br><span class="hljs-meta prompt_"># </span><span class="language-bash">启用neutron服务的端口发生变化时,将会发送通知给nova服务</span><br>openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_data_changes true<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用nova服务的认证URL</span><br>openstack-config --set /etc/neutron/neutron.conf nova auth_url http://controller:5000<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用nova服务的认证类型</span><br>openstack-config --set /etc/neutron/neutron.conf nova auth_type password <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用nova服务的默认项目域</span><br>openstack-config --set /etc/neutron/neutron.conf nova project_domain_name default <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用nova服务的默认普通用户域</span><br>openstack-config --set /etc/neutron/neutron.conf nova user_domain_name default <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用nova服务的注册名</span><br>openstack-config --set /etc/neutron/neutron.conf nova region_name RegionOne <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务在nova服务里的项目是属于service</span><br>openstack-config --set /etc/neutron/neutron.conf nova project_name service <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用nova服务的用户名</span><br>openstack-config --set /etc/neutron/neutron.conf nova username nova <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用nova服务的密码</span><br>openstack-config --set /etc/neutron/neutron.conf nova password 123456 <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的锁路径</span><br>openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>grep '^[a-z]' /etc/neutron/neutron.conf<br></code></pre></td></tr></table></figure><ul><li>配置neutron服务中的ml2插件</li></ul><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置ml2插件使用的驱动类型</span><br>openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers flat,vlan,vxlan<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置ml2插件中租户使用的网络类型</span><br>openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types vxlan<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置ml2插件的机制驱动</span><br>openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers linuxbridge,l2population<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置ml2插件的端口拓展驱动</span><br>openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 extension_drivers port_security<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置ml2插件使用名为provier的物理网络作为扁平网络</span><br>openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_flat flat_networks provider<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置ml2插件中vxlan的范围是1-1000</span><br>openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vxlan vni_ranges 1:1000<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置ml2插件启用ipset安全组规则</span><br>openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_ipset true<br><br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>grep '^[a-z]' /etc/neutron/plugins/ml2/ml2_conf.ini<br></code></pre></td></tr></table></figure><ul><li>配置neutron服务中ml2插件的linux网桥</li></ul><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置linux网桥的接口</span><br>openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings provider:eth0<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置linux网桥启用vxlan</span><br>openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan true<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置linux网桥的本地IP地址</span><br>openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan local_ip 192.168.66.6<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置linux网桥启用vxlan网络的二层广播域信息分发</span><br>openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan l2_population true<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置linux网桥启用安全组</span><br>openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group true<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置linux网桥设置安全组驱动</span><br>openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>grep '^[a-z]' /etc/neutron/plugins/ml2/linuxbridge_agent.ini<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">内核模块在重启后依然被加载</span><br>echo 'br_netfilter' > /etc/modules-load.d/br_netfilter.conf<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">重新加载bridge模块</span><br>modprobe -r bridge<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">重新加载br_netfilter模块</span><br>modprobe br_netfilter<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">永久允许Linux内核中网桥与iptables防火墙规则之间的交互</span><br>echo 'net.bridge.bridge-nf-call-iptables = 1' >> /etc/sysctl.conf<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">永久允许Linux内核中网桥与iptables6防火墙规则之间的交互</span><br>echo 'net.bridge.bridge-nf-call-ip6tables = 1' >> /etc/sysctl.conf<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">应用设置</span><br>sysctl -p<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务中的dhcp服务使用的接口驱动</span><br>openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT interface_driver linuxbridge<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务中dhcp服务使用的dns驱动</span><br>openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT dhcp_driver neutron.agent.linux.dhcp.Dnsmasq<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务服务启用元数据存储</span><br>openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT enable_isolated_metadata true<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>grep '^[a-z]' /etc/neutron/dhcp_agent.ini<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的元数据主机</span><br>openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT nova_metadata_host controller<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的元数据代理共享密钥</span><br>openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT metadata_proxy_shared_secret 123456<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>grep '^[a-z]' /etc/neutron/metadata_agent.ini<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">补充配置nova服务使用neutron服务的URL</span><br>openstack-config --set /etc/nova/nova.conf neutron url http://controller:9696<br><span class="hljs-meta prompt_"># </span><span class="language-bash">补充配置nova服务使用neutron服务的外部认证URL</span><br>openstack-config --set /etc/nova/nova.conf neutron auth_url http://controller:5000<br><span class="hljs-meta prompt_"># </span><span class="language-bash">补充配置nova服务使用neutron服务的认证类型</span><br>openstack-config --set /etc/nova/nova.conf neutron auth_type password<br><span class="hljs-meta prompt_"># </span><span class="language-bash">补充配置nova服务使用neutron服务的默认项目域</span><br>openstack-config --set /etc/nova/nova.conf neutron project_domain_name default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">补充配置nova服务使用neutron服务的普通用户域</span><br>openstack-config --set /etc/nova/nova.conf neutron user_domain_name default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">补充配置nova服务使用neutron服务的区域名</span><br>openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne<br><span class="hljs-meta prompt_"># </span><span class="language-bash">补充配置neutron服务属于【service】项目</span><br>openstack-config --set /etc/nova/nova.conf neutron project_name service<br><span class="hljs-meta prompt_"># </span><span class="language-bash">补充配置neutron服务使用的用户名</span><br>openstack-config --set /etc/nova/nova.conf neutron username neutron<br><span class="hljs-meta prompt_"># </span><span class="language-bash">补充配置neutron服务使用的密码</span><br>openstack-config --set /etc/nova/nova.conf neutron password 123456<br><span class="hljs-meta prompt_"># </span><span class="language-bash">补充配置neutron服务启用元数据代理服务</span><br>openstack-config --set /etc/nova/nova.conf neutron service_metadata_proxy true<br><span class="hljs-meta prompt_"># </span><span class="language-bash">补充配置neutron服务使用元数据代理共享密钥</span><br>openstack-config --set /etc/nova/nova.conf neutron metadata_proxy_shared_secret 123456<br><br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>egrep -v "^#|^$" /etc/nova/nova.conf<br></code></pre></td></tr></table></figure><h4 id="17-6-创建网络插件的文件链接"><a href="#17-6-创建网络插件的文件链接" class="headerlink" title="17.6 创建网络插件的文件链接"></a>17.6 创建网络插件的文件链接</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">创建网络插件的链接</span><br>ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini<br><br><br></code></pre></td></tr></table></figure><h4 id="17-7-同步数据库"><a href="#17-7-同步数据库" class="headerlink" title="17.7 同步数据库"></a>17.7 同步数据库</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">同步neutron数据库</span><br>su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron<br></code></pre></td></tr></table></figure><h4 id="17-8-重启neutron以及依赖服务"><a href="#17-8-重启neutron以及依赖服务" class="headerlink" title="17.8 重启neutron以及依赖服务"></a>17.8 重启neutron以及依赖服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">首先重启nova-api服务</span><br>systemctl restart openstack-nova-api<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看nova-api服务的状态</span><br>systemctl status openstack-nova-api<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">重启neutron以及依赖服务</span><br>systemctl restart neutron-server neutron-linuxbridge-agent \<br>neutron-dhcp-agent neutron-metadata-agent <br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">因为选择Self-service networks部署,还需要重启其他服务</span><br>systemctl restart neutron-l3-agent<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看neutron以及依赖服务的状态</span><br>systemctl status neutron-server neutron-linuxbridge-agent \<br>neutron-dhcp-agent neutron-metadata-agent neutron-l3-agent<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">让neutron以及依赖服务开机自启动</span><br>systemctl enable neutron-server neutron-linuxbridge-agent \<br>neutron-dhcp-agent neutron-metadata-agent neutron-l3-agent<br></code></pre></td></tr></table></figure><h3 id="18-安装配置neutron网络服务-computer节点"><a href="#18-安装配置neutron网络服务-computer节点" class="headerlink" title="18. 安装配置neutron网络服务(computer节点)"></a>18. 安装配置neutron网络服务(computer节点)</h3><h4 id="18-1-安装neutron服务"><a href="#18-1-安装neutron服务" class="headerlink" title="18.1 安装neutron服务"></a>18.1 安装neutron服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">computer节点安装neutron服务</span><br>yum install openstack-neutron-linuxbridge ebtables ipset -y <br></code></pre></td></tr></table></figure><h4 id="18-2-配置neutron服务"><a href="#18-2-配置neutron服务" class="headerlink" title="18.2 配置neutron服务"></a>18.2 配置neutron服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用rabbitmq服务器的地址</span><br>openstack-config --set /etc/neutron/neutron.conf DEFAULT transport_url rabbit://openstack:123456@controller<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用的认证策略是keystone服务</span><br>openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用keystone服务的外部URL</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken www_authenticate_uri http://controller:5000<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用keystone服务的内部URL</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller:5000<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用memcached的服务器地址</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller:11211<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用keystone服务的认证类型</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务在keystone服务中的默认项目域</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务在keystone服务中的普通用户域</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务在keystone服务中属于【service】项目</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务在keystone服务中使用的用户名</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务在keystone服务中neutron用户使用的密码</span><br>openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password 123456<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务锁的路径</span><br>openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp<br><br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>grep '^[a-z]' /etc/neutron/neutron.conf<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的外部URL</span><br>openstack-config --set /etc/nova/nova.conf neutron url http://controller:9696<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的内部URL</span><br>openstack-config --set /etc/nova/nova.conf neutron auth_url http://controller:5000<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的认证类型</span><br>openstack-config --set /etc/nova/nova.conf neutron auth_type password<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的项目域</span><br>openstack-config --set /etc/nova/nova.conf neutron project_domain_name default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的普通用户域</span><br>openstack-config --set /etc/nova/nova.conf neutron user_domain_name default<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的注册名</span><br>openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务的项目名</span><br>openstack-config --set /etc/nova/nova.conf neutron project_name service <br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用的用户名</span><br>openstack-config --set /etc/nova/nova.conf neutron username neutron<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务使用neutron用户的密码</span><br>openstack-config --set /etc/nova/nova.conf neutron password 123456<br><br><br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>egrep -v "^#|^$" /etc/nova/nova.conf<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务中ml2插件的linux网桥的物理接口</span><br>openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings provider:eth0<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务中ml2插件的linux网桥启用vxlan</span><br>openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan true<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务中的ml2插件的linux网桥的本地IP地址</span><br>openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan local_ip 192.168.66.7<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务中的ml2插件的linux网桥启用vxlan网络的二层广播域信息分发</span><br>openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan l2_population true<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务中的ml2插件的linux网桥启用安全组</span><br>openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group true<br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置neutron服务中的ml2插件的linux网桥设置安全组驱动</span><br>openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看修改内容</span><br>grep '^[a-z]' /etc/neutron/plugins/ml2/linuxbridge_agent.ini<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">内核模块在重启后依然被加载</span><br>echo 'br_netfilter' > /etc/modules-load.d/br_netfilter.conf<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">重新加载bridge模块</span><br>modprobe -r bridge<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">重新加载br_netfilter模块</span><br>modprobe br_netfilter<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">永久允许Linux内核中网桥与iptables防火墙规则之间的交互</span><br>echo 'net.bridge.bridge-nf-call-iptables = 1' >> /etc/sysctl.conf<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">永久允许Linux内核中网桥与iptables6防火墙规则之间的交互</span><br>echo 'net.bridge.bridge-nf-call-ip6tables = 1' >> /etc/sysctl.conf<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">应用设置</span><br>sysctl -p<br></code></pre></td></tr></table></figure><h4 id="18-3-启动neutron服务"><a href="#18-3-启动neutron服务" class="headerlink" title="18.3 启动neutron服务"></a>18.3 启动neutron服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">启动neutron网络服务以及nova计算服务</span><br>systemctl restart openstack-nova-compute neutron-linuxbridge-agent<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看两个服务的状态</span><br>systemctl status openstack-nova-compute neutron-linuxbridge-agent<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">让neutron服务能够开机自动启动</span><br>systemctl enable neutron-linuxbridge-agent<br></code></pre></td></tr></table></figure><h4 id="18-4-在controller节点验证"><a href="#18-4-在controller节点验证" class="headerlink" title="18.4 在controller节点验证"></a>18.4 在controller节点验证</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">在contorller节点验证computer节点是否成功启动</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">使用管理员系统变量</span><br>source /opt/adminrc-openstack<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">列出neutron服务拓展列表</span><br>neutron ext-list<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">列出neutron服务的代理列表</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">正常情况下,控制节点有3个服务,计算节点有1个服务</span><br>openstack network agent list<br></code></pre></td></tr></table></figure><h3 id="19-安装配置dashboard面板-controller节点"><a href="#19-安装配置dashboard面板-controller节点" class="headerlink" title="19. 安装配置dashboard面板(controller节点)"></a>19. 安装配置dashboard面板(controller节点)</h3><h4 id="19-1-安装dashboard服务"><a href="#19-1-安装dashboard服务" class="headerlink" title="19.1 安装dashboard服务"></a>19.1 安装dashboard服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">安装dashboard软件包</span><br>yum install openstack-dashboard -y <br></code></pre></td></tr></table></figure><h4 id="19-2-配置dashboard服务"><a href="#19-2-配置dashboard服务" class="headerlink" title="19.2 配置dashboard服务"></a>19.2 配置dashboard服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">备份原有配置</span><br>cp /etc/openstack-dashboard/local_settings /etc/openstack-dashboard/local_settings.bak<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">将openstack-dashboard的主机改为任意地址【0.0.0.0】或主机名或【controller】的IP地址</span><br>sed -i "184s|127.0.0.1|controller|" /etc/openstack-dashboard/local_settings<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置通过仪表盘创建的用户默认角色配置为 user</span><br>sed -i "186s|"_member_"|"user"|" /etc/openstack-dashboard/local_settings<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置openstack-dashboard允许以任意主机名访问</span><br>sed -i "38s|'horizon.example.com'|'*'|" /etc/openstack-dashboard/local_settings<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置memcached存储服务</span><br>sed -i "163s|locmem.LocMemCache|memcached.MemcachedCache|" /etc/openstack-dashboard/local_settings<br>sed -i "163 a 'LOCATION': 'controller:11211'," /etc/openstack-dashboard/local_settings<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">启用openstack对多域的支持</span><br>sed -i "75s|#||" /etc/openstack-dashboard/local_settings<br>sed -i "75s|False|True|" /etc/openstack-dashboard/local_settings<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">将配置API的注释删除,以配置openstack的API版本</span><br>sed -i "64s|#||" /etc/openstack-dashboard/local_settings<br>sed -i "66s|#||" /etc/openstack-dashboard/local_settings<br>sed -i "67s|#||" /etc/openstack-dashboard/local_settings<br>sed -i "68s|#||" /etc/openstack-dashboard/local_settings<br>sed -i "70s|#||" /etc/openstack-dashboard/local_settings<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">将通过仪表盘创建用户时的默认域的注释删除</span><br>sed -i "97s|#||" /etc/openstack-dashboard/local_settings<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">因我选择的是部署私有网络,所以启用3层网络支持</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">启用分布式路由</span><br>sed -i "329s|False|True|" /etc/openstack-dashboard/local_settings<br><span class="hljs-meta prompt_"># </span><span class="language-bash">启用高可用路由</span><br>sed -i "330s|False|True|" /etc/openstack-dashboard/local_settings<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">将默认时区配置为上海</span><br>sed -i "465s|UTC|Asia/Shanghai|" /etc/openstack-dashboard/local_settings<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">配置dashboard会话引擎</span><br>echo "SESSION_ENGINE = 'django.contrib.sessions.backends.cache'" >> /etc/openstack-dashboard/local_settings<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">添加httpd的应用组</span><br>sed -i "3 a WSGIApplicationGroup %{GLOBAL}" /etc/httpd/conf.d/openstack-dashboard.conf <br><br><br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">将dashboard目录所有者给web服务的用户和组</span><br>chown -R apache:apache /usr/share/openstack-dashboard/<br></code></pre></td></tr></table></figure><h4 id="19-3-启动web和会话存储服务"><a href="#19-3-启动web和会话存储服务" class="headerlink" title="19.3 启动web和会话存储服务"></a>19.3 启动web和会话存储服务</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">重启web服务以及会话存储服务</span><br>systemctl restart httpd memcached<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看web服务以及会话存储服务的状态</span><br>systemctl status httpd memcached<br></code></pre></td></tr></table></figure><h3 id="20-登录dashboard"><a href="#20-登录dashboard" class="headerlink" title="20. 登录dashboard"></a>20. 登录dashboard</h3><ul><li><p>浏览器输入<code>http://192.168.66.6/dashboard</code></p></li><li><p>这个<code>192.168.66.6</code>是controller节点的IP地址,根据自己的IP地址填写</p></li></ul><blockquote><ul><li><p>这里的信息是在<code>keystone-manage bootstrap</code>指令里指定的</p></li><li><p>如果根据以上教程来,信息在<code>/opt/adminrc-openstack</code>即”管理员环境变量“</p></li></ul><p>域:default</p><p>用户名:admin</p><p>密码:kst123456</p></blockquote><h1 id="备注"><a href="#备注" class="headerlink" title="备注"></a>备注</h1><h2 id="1-如果出现Failed-to-discover-available-identity-versions-when-contacting-http-controller-5000-v3"><a href="#1-如果出现Failed-to-discover-available-identity-versions-when-contacting-http-controller-5000-v3" class="headerlink" title="1. 如果出现Failed to discover available identity versions when contacting http://controller:5000/v3"></a>1. 如果出现Failed to discover available identity versions when contacting <a href="http://controller:5000/v3">http://controller:5000/v3</a></h2><ul><li>根据这个的指导完成:<a href="https://blog.csdn.net/qq_47733361/article/details/123600852">【已解决】Failed to discover available identity versions when contacting http://controller:5000/v3.-CSDN博客</a></li></ul><h2 id="2-如果出现了mariadb不能远程登录的问题参考以下网址"><a href="#2-如果出现了mariadb不能远程登录的问题参考以下网址" class="headerlink" title="2. 如果出现了mariadb不能远程登录的问题参考以下网址"></a>2. 如果出现了mariadb不能远程登录的问题参考以下网址</h2><ul><li><p><a href="https://www.cnblogs.com/wujuncheng/p/13388988.html">在Linux中安装MariaDB并添加远程访问 - 吴俊城 - 博客园</a></p></li><li><p><a href="https://www.daweibro.com/node/308#:~:text=%E5%AE%89%E8%A3%85%20MariaDB%2010.3%20%E4%BB%A5%E5%90%8E%EF%BC%8C%E9%BB%98%E8%AE%A4%E6%98%AF%E4%BD%BF%E7%94%A8%20root%20%E7%94%A8%E6%88%B7%E7%9B%B4%E6%8E%A5%E9%80%9A%E8%BF%87Unix%20Socket,%E7%99%BB%E5%BD%95%E8%80%8C%E4%B8%8D%E4%BD%BF%E7%94%A8%E5%AF%86%E7%A0%81%E7%9A%84%E3%80%82%20%E8%A6%81%E5%88%87%E6%8D%A2%E6%88%90%E4%BD%BF%E7%94%A8%E5%AF%86%E7%A0%81%E7%99%BB%E5%BD%95%E7%9A%84%E8%AF%9D%EF%BC%8C%E9%9C%80%E8%A6%81%E6%8A%8A%20%E9%BB%98%E8%AE%A4%E7%9A%84plugin%20%E4%BB%8E%20unix_socket%20%E5%88%87%E6%8D%A2%E4%B8%BA%20mysql_native_password%2C%20%E5%B9%B6%E4%B8%94%E7%BB%99%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE%E5%AF%86%E7%A0%81%E3%80%82">修改 MariaDB 10.3 使用用户名和密码登陆 - 大伟哥博客</a></p></li></ul><h2 id="3-如果openstack-nova-compute无法启动"><a href="#3-如果openstack-nova-compute无法启动" class="headerlink" title="3. 如果openstack-nova-compute无法启动"></a>3. 如果openstack-nova-compute无法启动</h2><ul><li><a href="https://blog.csdn.net/qq_62593237/article/details/124606290">解决openstack-nova-compute.service无法启动问题_job for openstack-nova-compute.service failed beca-CSDN博客</a></li></ul><h1 id="参考文档"><a href="#参考文档" class="headerlink" title="参考文档"></a>参考文档</h1><ol><li><p><a href="https://blog.csdn.net/zz_aiytag/article/details/104390440">centos7.4安装部署openstack(rocky)_openstack liberty的仓库指定的baseurl-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/qq_28513801/article/details/90269044">解决搭建官方openstack时遇到的服务器报错Internal Server Error 返回状态500The server encountered an internal error_internal server error the server encountered an in-CSDN博客</a></p></li></ol>]]></content>
<categories>
<category>服务器</category>
<category>云计算</category>
</categories>
<tags>
<tag>Linux</tag>
<tag>OpenStack</tag>
</tags>
</entry>
<entry>
<title>搭建ZeroTier的Moon节点</title>
<link href="/2024/12/12/%E6%90%AD%E5%BB%BAZeroTier%E7%9A%84Moon%E8%8A%82%E7%82%B9/"/>
<url>/2024/12/12/%E6%90%AD%E5%BB%BAZeroTier%E7%9A%84Moon%E8%8A%82%E7%82%B9/</url>
<content type="html"><![CDATA[<h1 id="搭建ZeroTier的Moon节点"><a href="#搭建ZeroTier的Moon节点" class="headerlink" title="搭建ZeroTier的Moon节点"></a>搭建ZeroTier的Moon节点</h1><h2 id="ZeroTier流量分析"><a href="#ZeroTier流量分析" class="headerlink" title="ZeroTier流量分析"></a>ZeroTier流量分析</h2><hr><ul><li><p>公网IP:同时拥有IPV4和IPV6的公网IP,或者仅拥有一方,都可以认为有公网IP;</p></li><li><p><u><em>Moons:由于国内的网络安全策略,导致国内可能没有相应的服务器,这时候就需要自己搭建,以便加快相互通信</em></u></p></li><li><p>动作1:出口网关路由器向中心服务器通告自己的IP地址以及端口信息;为了便于后面两个局域网互相通信;即<u><em>“判断两端局域网是否存在<strong>公网IP</strong>”</em></u></p></li><li><p>动作2:若一方存在<u><em>“公网IP”</em></u>,则ZeroTier帮助两个局域网的设备通过zerotier私有协议,直接建立连接,从而达到P2P直连(就像在同一个内网互相连接一样);</p></li><li><p>动作3:若两方都不存在<u><em>”公网IP“</em></u>,或一方有<u><em>“公网IPV6”</em></u>一方没有,那么也是认为不存在<u><em>“公网IP”</em></u>的情况;这时候,国外中心服务器(Planet)会通告目前可用的国外/国内转发服务器(Moons)【或者理解为备份中心服务器】,两端局域网通过这些(Moons)进行数据通信</p></li></ul><hr><p><img src="/img/assets/2024-10-15-15-58-33-image.png"></p><hr><h2 id="搭建Moon节点准备工作"><a href="#搭建Moon节点准备工作" class="headerlink" title="搭建Moon节点准备工作"></a>搭建Moon节点准备工作</h2><h3 id="1-根据自己的服务器的类型安装对应的ZeroTier"><a href="#1-根据自己的服务器的类型安装对应的ZeroTier" class="headerlink" title="1. 根据自己的服务器的类型安装对应的ZeroTier"></a>1. 根据自己的服务器的类型安装对应的ZeroTier</h3><hr><h3 id="2-正式开始搭建"><a href="#2-正式开始搭建" class="headerlink" title="2. 正式开始搭建"></a>2. 正式开始搭建</h3><h4 id="Linux"><a href="#Linux" class="headerlink" title="Linux"></a>Linux</h4><ol><li><pre><code class="shell">sudo zerotier-cli initmoon identity.public >> moon.json<figure class="highlight autoit"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs autoit"><br><span class="hljs-number">2.</span> 修改模板(moon.json)<br><br>```shell<br><span class="hljs-meta"># 找到以下这行,然后根据自己的IP地址修改</span><br>“stableEndpoints”: [ “<span class="hljs-number">8.8</span><span class="hljs-number">.8</span><span class="hljs-number">.8</span>/<span class="hljs-number">9993</span>” ] <span class="hljs-meta">#8.8.8.8 改为你的公网IP</span><br><span class="hljs-meta"># 如果有多个IP则加“,”号区分</span><br><span class="hljs-meta"># 例 “stableEndpoints”: [ “8.8.8.8/9993”,<span class="hljs-string">"IPV6地址/9993"</span> ]</span><br></code></pre></td></tr></table></figure></code></pre></li><li><p>生成MOON签名</p></li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs batch">sudo zerotier-cli genmoon moon.json<br></code></pre></td></tr></table></figure><ul><li><p>运行后在当前目录下会生成类似0000xxx.moon的文件</p></li><li><p>“0000xxx”这一串字符就是这台Moon的ID,在后续使用中会用到,需要记住</p></li></ul><ol start="4"><li><strong>把Moon加入到网络中</strong></li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs batch"># 在当前目录下建立文件夹 moons.d<br># 然后将刚刚生成的 “0000xxx.moon” 文件拷贝进去<br></code></pre></td></tr></table></figure><ol start="5"><li><p>将ZeroTier程序重新启动</p></li><li><p><strong>最后在防火墙上放行udp的9993端口!!!!!</strong></p></li><li><p>搭建完成</p></li></ol><hr><h4 id="Windows"><a href="#Windows" class="headerlink" title="Windows"></a>Windows</h4><ol><li><p>找到安装ZeroTier的系统目录;<u><em>一般在C:\ProgramData\这个目录下,这个目录有可能被隐藏,需要打开隐藏目录</em></u></p></li><li><p>用管理员打开CMD命令行</p></li><li><p>在里面写入以下命令</p></li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs batch">cd "你刚刚找到的ZeroTier的系统目录"<br>(例:cd C:\ProgramData\ZeroTier\One")<br></code></pre></td></tr></table></figure><ol start="4"><li><p>接下来和在Linux中搭建Moon的内容一致</p></li><li><p>生成Moon模板(在当前目录下)</p></li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs batch">zerotier-one_x64.exe -i initmoon identity.public >> moon.json<br></code></pre></td></tr></table></figure><ol start="6"><li>修改模板(moon.json)</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs batch"># 找到以下这行,然后根据自己的IP地址修改<br>“stableEndpoints”: [ “8.8.8.8/9993” ] #8.8.8.8 改为你的公网IP<br># 如果有多个IP则加“,”号区分<br># 例 “stableEndpoints”: [ “8.8.8.8/9993”,"IPV6地址/9993" ]<br></code></pre></td></tr></table></figure><ol start="7"><li>生成MOON签名</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs batch">zerotier-one_x64.exe -i genmoon moon.json<br></code></pre></td></tr></table></figure><ul><li><p>运行后在C:\ProgramData\ZeroTier\One\目录下会生成类似000xx.moon的文件</p></li><li><p>“000xx”这一串字符就是这台Moon的ID,在后续使用中会用到,需要记住</p></li></ul><ol start="8"><li>把Moon加入到网络中</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs batch"># 在C:\ProgramData\ZeroTier\One\目录下建立文件夹 moons.d<br># 然后将刚刚生成的 “000xx.moon” 文件拷贝进去<br></code></pre></td></tr></table></figure><ol start="9"><li><p>将ZeroTier程序重新启动</p></li><li><p><strong>最后在防火墙上放行udp和tcp的9993端口!!!!!</strong></p></li><li><p>搭建完成</p></li></ol><h3 id="3-使用Moon服务器"><a href="#3-使用Moon服务器" class="headerlink" title="3. 使用Moon服务器"></a>3. 使用Moon服务器</h3><h4 id="在需要使用Moon服务器连接的设备上执行以下命令"><a href="#在需要使用Moon服务器连接的设备上执行以下命令" class="headerlink" title="在需要使用Moon服务器连接的设备上执行以下命令"></a>在需要使用Moon服务器连接的设备上执行以下命令</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">Windows</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">需要使用cmd的管理员模式</span><br>cd C:\ProgramData\ZeroTier\One\<br>zerotier-one_x64.exe -q orbit 0000xxx 00000xxx #moon服务器的ID值,输入2遍<br><span class="hljs-meta prompt_"># </span><span class="language-bash">Linux</span><br>sudo zerotier-cli orbit 000000xxxxx 000000xxxxx #moon服务器的ID值,输入2遍<br></code></pre></td></tr></table></figure><h3 id="4-验证客户端是否成功使用Moon服务器"><a href="#4-验证客户端是否成功使用Moon服务器" class="headerlink" title="4. 验证客户端是否成功使用Moon服务器"></a>4. 验证客户端是否成功使用Moon服务器</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">Windows</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">同样使用cmd的管理员模式</span><br>cd C:\ProgramData\ZeroTier\One\<br>zerotier-one_x64.exe -q listpeers<br><span class="hljs-meta prompt_"># </span><span class="language-bash">Linux</span><br>sudo zerotier-cli listpeers<br></code></pre></td></tr></table></figure><hr><h3 id="拓展"><a href="#拓展" class="headerlink" title="拓展"></a>拓展</h3><ul><li>如果在一开始的时候ZeroTier的网络加错了,没关系,退出重新加入正确的就好</li></ul><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">Windows</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">右键屏幕右下方的小图标栏中的zerotier图标,加入正确的网络就行</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">Linux</span><br>zerotier-cli leave "刚刚错误的网络ID"<br>zerotier-cli join "正确的网络ID" <br></code></pre></td></tr></table></figure><ul><li>关于三条命令的解释</li></ul><table><thead><tr><th align="center">zerotier-cli listpeers</th><th align="center">zerotier-cli peers</th><th align="center">zerotier-cli listnetworks</th></tr></thead><tbody><tr><td align="center">列出所有对等点的信息;</td><td align="center">列出所有对等点的信息,<u><em>但是更加漂亮</em></u></td><td align="center">列出当前设备加入的所有zerotier网络信息</td></tr></tbody></table><p><strong>Listpeers的输出信息</strong></p><table><thead><tr><th><ztaddr></th><th><ver></th><th><role></th><th><lat></th><th><link></th><th><lastTX></th><th><lastRX></th><th><path></th></tr></thead><tbody><tr><td>zerotier私有地址</td><td>版本号</td><td>对等点身份(行星节点、还是叶子结点、还是中转服务器节点)</td><td>服务器的延迟</td><td>连接类型</td><td>最后一次数据发送的时间戳</td><td>最后一次数据接收的时间戳</td><td>实际的IP地址以及端口</td></tr></tbody></table><p><strong>Peers的输出信息</strong></p><table><thead><tr><th><ztaddr></th><th><path></th><th><latency></th><th><version></th><th><role></th></tr></thead><tbody><tr><td>zerotier私有地址</td><td>实际的IP地址以及端口</td><td>服务器的延迟</td><td>zerotier的版本号</td><td>对等点身份(行星节点、还是叶子结点、还是中转服务器节点)</td></tr></tbody></table><p><strong>Listnetworks的输出信息</strong></p><table><thead><tr><th><nwid></th><th><name></th><th><mac></th><th><status></th><th><type></th><th><dev></th><th><ZT assigned ips></th></tr></thead><tbody><tr><td>zerotier网络的唯一标识符</td><td>网络名称(可以在zerotier官网自己定义)</td><td>当前设备的物理地址</td><td>当前设备在zerotier网络中的状态</td><td>网络类型(私有/公共)</td><td>网络接口的设备名称</td><td>当前设备在zerotier中被分配的IP地址</td></tr></tbody></table>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>Linux</tag>
<tag>Zeotier</tag>
</tags>
</entry>
<entry>
<title>Linux系统搭建代理服务</title>
<link href="/2024/12/12/Linux%E7%B3%BB%E7%BB%9F%E6%90%AD%E5%BB%BA%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1/"/>
<url>/2024/12/12/Linux%E7%B3%BB%E7%BB%9F%E6%90%AD%E5%BB%BA%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1/</url>
<content type="html"><![CDATA[<h1 id="Linux系统搭建代理服务"><a href="#Linux系统搭建代理服务" class="headerlink" title="Linux系统搭建代理服务"></a>Linux系统搭建代理服务</h1><h2 id="Socks5代理"><a href="#Socks5代理" class="headerlink" title="Socks5代理"></a>Socks5代理</h2><h3 id="1、安装编译所需的组件"><a href="#1、安装编译所需的组件" class="headerlink" title="1、安装编译所需的组件"></a>1、安装编译所需的组件</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs shell">yum -y install gcc gcc-c++ automake make pam-devel openldap-devel cyrus-sasl-devel openssl-devel<br></code></pre></td></tr></table></figure><h3 id="2、官网下载SS5最新版本的源代码"><a href="#2、官网下载SS5最新版本的源代码" class="headerlink" title="2、官网下载SS5最新版本的源代码"></a>2、官网下载SS5最新版本的源代码</h3><p><a href="https://ss5.sourceforge.net/software.htm">官网</a></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 使用wget下载SS5压缩包到/tmp目录</span><br>wget -c https://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz?viasf=1 -O /tmp/ss5-3.8.9-8.tar.gz<br></code></pre></td></tr></table></figure><h3 id="3、解压后开始编译安装"><a href="#3、解压后开始编译安装" class="headerlink" title="3、解压后开始编译安装"></a>3、解压后开始编译安装</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">解压SS5压缩文件到指定目录</span><br>tar -zxvf /tmp/ss5-3.8.9-8.tar.gz -C /opt<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">进入SS5目录</span><br>cd /opt/ss5-3.8.9<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">检查编译环境是否具备编译该软件所需的所有依赖库和工具,并生成Makefile</span><br>./configure<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">根据Makefile文件编译软件</span><br>make<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">将编译好的软件安装到系统中</span><br>make install <br></code></pre></td></tr></table></figure><h3 id="4、修改SS5配置文件"><a href="#4、修改SS5配置文件" class="headerlink" title="4、修改SS5配置文件"></a>4、修改SS5配置文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 编辑SS5配置文件</span><br>vi /etc/opt/ss5/ss5.conf<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 去掉87行 auth 0.0.0.0/0 - - 前的"#",允许任何人都可以进行认证</span><br>sed -i <span class="hljs-string">'s|#auth|auth|'</span> /etc/opt/ss5/ss5.conf<br><br><span class="hljs-comment"># 去掉203行 permit - 0.0.0.0/0 - 0.0.0.0/0 - - - - - 前的"#" </span><br><span class="hljs-comment"># 即允许任何人都可以连接该服务器</span><br>sed -i <span class="hljs-string">'s|#permit|permit|'</span> /etc/opt/ss5/ss5.conf <br></code></pre></td></tr></table></figure><ul><li>ss5 默认使用1080端口,并允许任何人使用,如果要修改默认端口:</li></ul><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">将端口修改为你需要的端口,切记要放行你的端口号</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">SS5_OPTS=<span class="hljs-string">" -u root -b 0.0.0.0:1080"</span></span> <br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">新增配置到系统SS5配置</span><br>echo "SS5_OPTS=" -u root -b 0.0.0.0:1080"" >> /etc/sysconfig/ss5<br></code></pre></td></tr></table></figure><h3 id="5、开机自启ss5"><a href="#5、开机自启ss5" class="headerlink" title="5、开机自启ss5"></a>5、开机自启ss5</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">给ss5程序增加执行权限</span><br>chmod +x /etc/init.d/ss5<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">把SS5服务添加到chkconfig列表</span><br>chkconfig --add ss5<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">设置SS5开机自启动运行级别</span><br>chkconfig --level 345 ss5 on<br></code></pre></td></tr></table></figure><h3 id="6、配置访问权限-可选"><a href="#6、配置访问权限-可选" class="headerlink" title="6、配置访问权限(可选)"></a>6、配置访问权限(可选)</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">编辑SS5配置文件</span><br>vi /etc/opt/ss5/ss5.conf<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">找到这两行,按照以下两行的格式修改</span><br>auth 0.0.0.0/0 - u<br>permit u 0.0.0.0/0 - 0.0.0.0/0 - - - - -<br></code></pre></td></tr></table></figure><h4 id="设置用户名和密码"><a href="#设置用户名和密码" class="headerlink" title="设置用户名和密码"></a>设置用户名和密码</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">编辑SS5的账户文件</span><br>vi /etc/opt/ss5/ss5.passwd<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">一行一个账号,用户名和密码之间用空格间隔</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">例如</span><br>user1 123<br>user2 456<br></code></pre></td></tr></table></figure><h3 id="7、重启服务"><a href="#7、重启服务" class="headerlink" title="7、重启服务"></a>7、重启服务</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">开启SS5服务</span><br>service ss5 start<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">停止SS5服务</span><br>service ss5 stop<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">重启SS5服务</span><br>service ss5 restart<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">查询服务启动</span><br>netstat -lntp | grep ss5<br><br></code></pre></td></tr></table></figure><h3 id="8、查看SS5日志"><a href="#8、查看SS5日志" class="headerlink" title="8、查看SS5日志"></a>8、查看SS5日志</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看日志</span><br>tail -100f /var/log/ss5/ss5.log<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">关闭SS5日志记录</span><br>sed -i.bak 's|-t|-m -t|g' /etc/init.d/ss5 && systemctl daemon-reload<br></code></pre></td></tr></table></figure><h2 id="tinyproxy"><a href="#tinyproxy" class="headerlink" title="tinyproxy"></a>tinyproxy</h2><h3 id="1-安装tinyproxy"><a href="#1-安装tinyproxy" class="headerlink" title="1. 安装tinyproxy"></a>1. 安装tinyproxy</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs shell">yum install -y tinyproxy <br></code></pre></td></tr></table></figure><h3 id="2-修改配置文件"><a href="#2-修改配置文件" class="headerlink" title="2. 修改配置文件"></a>2. 修改配置文件</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs textile">tinyproxy的配置文件位于/etc/tinyproxy/tinyproxy.conf<br><br>端口配置在23行的"Port xxx"(xxx自己定义)<br><br>210行的Allow 127.0.0.1表示允许本地连接代理,改成Allow 0.0.0.0表示允许所有人连接代理<br>也可以改成需要的ip地址<br></code></pre></td></tr></table></figure><blockquote><p>注意防火墙需要放行对应端口!!!</p></blockquote><h3 id="3-tinyproxy的命令"><a href="#3-tinyproxy的命令" class="headerlink" title="3. tinyproxy的命令"></a>3. tinyproxy的命令</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">启动</span><br>service tinyproxy start<br><span class="hljs-meta prompt_"># </span><span class="language-bash">停止</span><br>service tinyproxy stop <br><span class="hljs-meta prompt_"># </span><span class="language-bash">重启</span><br>service tinyproxy restart<br></code></pre></td></tr></table></figure><h1 id="参考文档"><a href="#参考文档" class="headerlink" title="参考文档"></a>参考文档</h1><ol><li><p><a href="https://blog.csdn.net/l848168/article/details/94578235">解决socket-ss5日志过大的问题_ss5日志报role is alone-CSDN博客</a></p></li><li><p><a href="https://www.cnblogs.com/zenghansen/p/15428918.html">CentOS下配置ss5(SOCKS5)代理服务器 - zenghansen - 博客园</a></p></li></ol>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>Linux</tag>
<tag>socks5</tag>
<tag>tinyproxy</tag>
</tags>
</entry>
<entry>
<title>大数据运维软件链接</title>
<link href="/2024/12/12/%E5%A4%A7%E6%95%B0%E6%8D%AE%E8%BF%90%E7%BB%B4%E6%89%80%E9%9C%80%E8%BD%AF%E4%BB%B6%E9%93%BE%E6%8E%A5/"/>
<url>/2024/12/12/%E5%A4%A7%E6%95%B0%E6%8D%AE%E8%BF%90%E7%BB%B4%E6%89%80%E9%9C%80%E8%BD%AF%E4%BB%B6%E9%93%BE%E6%8E%A5/</url>
<content type="html"><![CDATA[<h1 id="大数据运维所需软件链接"><a href="#大数据运维所需软件链接" class="headerlink" title="大数据运维所需软件链接"></a>大数据运维所需软件链接</h1><h2 id="Hadoop"><a href="#Hadoop" class="headerlink" title="Hadoop"></a>Hadoop</h2><h3 id="国内"><a href="#国内" class="headerlink" title="国内"></a>国内</h3><ol><li><p><a href="https://repo.huaweicloud.com/apache/hadoop/common/">华为源———包含Hadoop的各版本</a></p></li><li><p><a href="https://mirror.iscas.ac.cn/apache/hadoop/common/">中国科学院软件研究所源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.ustc.edu.cn/apache/hadoop/common/">中科大源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/">清华源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.nju.edu.cn/apache/hadoop/common/">南京大学源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.bfsu.edu.cn/apache/hadoop/common/">北外源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.pku.edu.cn/apache/hadoop/common/">北大源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.aliyun.com/apache/hadoop/common/">阿里云源——反向代理Apache软件基金会的项目</a></p></li><li><p>………</p></li></ol><h3 id="国外"><a href="#国外" class="headerlink" title="国外"></a>国外</h3><ol><li><p><a href="https://downloads.apache.org/hadoop/common/">Apache软件基金会Hadoop项目历史存档</a></p></li><li><p><a href="https://archive.apache.org/dist/hadoop/common/">Apache Hadoop项目的各版本目录</a></p></li><li><p>……….</p></li></ol><h2 id="Zookeeper"><a href="#Zookeeper" class="headerlink" title="Zookeeper"></a>Zookeeper</h2><h3 id="国内-1"><a href="#国内-1" class="headerlink" title="国内"></a>国内</h3><ol><li><p><a href="https://repo.huaweicloud.com/apache/zookeeper/">华为源———包含Zookeeper的各版本</a></p></li><li><p><a href="https://mirror.iscas.ac.cn/apache/zookeeper/">中国科学院软件研究所源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.ustc.edu.cn/apache/zookeeper/">中科大源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/">清华源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.nju.edu.cn/apache/zookeeper/">南京大学源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.bfsu.edu.cn/apache/zookeeper/">北外源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.pku.edu.cn/apache/zookeeper/">北大源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.aliyun.com/apache/zookeeper/">阿里云源——反向代理Apache软件基金会的项目</a></p></li><li><p>………</p></li></ol><h3 id="国外-1"><a href="#国外-1" class="headerlink" title="国外"></a>国外</h3><ol><li><p><a href="https://downloads.apache.org/zookeeper/">Apache软件基金会Zookeeper项目历史存档</a></p></li><li><p><a href="https://archive.apache.org/dist/zookeeper/">Apache Zookeeper项目的各版本目录</a></p></li><li><p>……….</p></li></ol><h2 id="Hbase"><a href="#Hbase" class="headerlink" title="Hbase"></a>Hbase</h2><h3 id="国内-2"><a href="#国内-2" class="headerlink" title="国内"></a>国内</h3><ol><li><p><a href="https://repo.huaweicloud.com/apache/hbase/">华为源———包含Hbase的各版本</a></p></li><li><p><a href="https://mirror.iscas.ac.cn/apache/hbase/">中国科学院软件研究所源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.ustc.edu.cn/apache/hbase/">中科大源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.aliyun.com/apache/hbase/">阿里云源——反向代理Apache软件基金会的项目</a></p></li><li><p>……….</p></li></ol><h3 id="国外-2"><a href="#国外-2" class="headerlink" title="国外"></a>国外</h3><ol><li><p><a href="https://downloads.apache.org/hbase/">Apache软件基金会Hbase项目历史存档</a></p></li><li><p><a href="https://archive.apache.org/dist/hbase/">Apache Hbase项目的各版本目录</a></p></li><li><p>……….</p></li></ol><h2 id="Spark"><a href="#Spark" class="headerlink" title="Spark"></a>Spark</h2><h3 id="国内-3"><a href="#国内-3" class="headerlink" title="国内"></a>国内</h3><ol><li><p><a href="https://repo.huaweicloud.com/apache/spark/">华为源———包含Spark的各版本</a></p></li><li><p><a href="https://mirror.iscas.ac.cn/apache/spark/">中国科学院软件研究所源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.ustc.edu.cn/apache/spark/">中科大源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.aliyun.com/apache/spark/">阿里云源——反向代理Apache软件基金会的项目</a></p></li><li><p>……….</p></li></ol><h3 id="国外-3"><a href="#国外-3" class="headerlink" title="国外"></a>国外</h3><ol><li><p><a href="https://downloads.apache.org/spark/">Apache软件基金会Spark项目历史存档</a></p></li><li><p><a href="https://archive.apache.org/dist/spark/">Apache Spark项目的各版本目录</a></p></li><li><p>……….</p></li></ol><h2 id="Hive"><a href="#Hive" class="headerlink" title="Hive"></a>Hive</h2><h3 id="国内-4"><a href="#国内-4" class="headerlink" title="国内"></a>国内</h3><ol><li><p><a href="https://repo.huaweicloud.com/apache/hive/">华为源———包含Hive的各版本</a></p></li><li><p><a href="https://mirror.iscas.ac.cn/apache/hive/">中国科学院软件研究所源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.ustc.edu.cn/apache/hive/">中科大源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.aliyun.com/apache/hive/">阿里云源——反向代理Apache软件基金会的项目</a></p></li><li><p>……….</p></li></ol><h3 id="国外-4"><a href="#国外-4" class="headerlink" title="国外"></a>国外</h3><ol><li><p><a href="https://downloads.apache.org/hive/">Apache软件基金会Hive项目历史存档</a></p></li><li><p><a href="https://archive.apache.org/dist/hive/">Apache Hive项目的各版本目录</a></p></li><li><p>……….</p></li></ol><h2 id="Flume"><a href="#Flume" class="headerlink" title="Flume"></a>Flume</h2><h3 id="国内-5"><a href="#国内-5" class="headerlink" title="国内"></a>国内</h3><ol><li><p><a href="https://repo.huaweicloud.com/apache/flume/">华为源———包含Flume的各版本</a></p></li><li><p><a href="https://mirror.iscas.ac.cn/apache/flume/">中国科学院软件研究所源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.ustc.edu.cn/apache/flume/">中科大源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.aliyun.com/apache/flume/">阿里云源——反向代理Apache软件基金会的项目</a></p></li><li><p>……….</p></li></ol><h3 id="国外-5"><a href="#国外-5" class="headerlink" title="国外"></a>国外</h3><ol><li><p><a href="https://downloads.apache.org/flume/">Apache软件基金会Flume项目历史存档</a></p></li><li><p><a href="https://archive.apache.org/dist/flume/">Apache Flume项目的各版本目录</a></p></li><li><p>……….</p></li></ol><h2 id="Kafka"><a href="#Kafka" class="headerlink" title="Kafka"></a>Kafka</h2><h3 id="国内-6"><a href="#国内-6" class="headerlink" title="国内"></a>国内</h3><ol><li><p><a href="https://repo.huaweicloud.com/apache/kafka/">华为源———包含Kafka的各版本</a></p></li><li><p><a href="https://mirror.iscas.ac.cn/apache/kafka/">中国科学院软件研究所源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.ustc.edu.cn/apache/kafka/">中科大源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.aliyun.com/apache/kafka/">阿里云源——反向代理Apache软件基金会的项目</a></p></li><li><p>……….</p></li></ol><h3 id="国外-6"><a href="#国外-6" class="headerlink" title="国外"></a>国外</h3><ol><li><p><a href="https://downloads.apache.org/kafka/">Apache软件基金会Kafka项目历史存档</a></p></li><li><p><a href="https://archive.apache.org/dist/kafka/">Apache Spark项目的各版本目录</a></p></li><li><p>……….</p></li></ol><h2 id="Flink"><a href="#Flink" class="headerlink" title="Flink"></a>Flink</h2><h3 id="国内-7"><a href="#国内-7" class="headerlink" title="国内"></a>国内</h3><ol><li><p><a href="https://repo.huaweicloud.com/apache/flink/">华为源———包含Flink的各版本</a></p></li><li><p><a href="https://mirror.iscas.ac.cn/apache/flink/">中国科学院软件研究所源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.ustc.edu.cn/apache/flink/">中科大源——反向代理Apache软件基金会的项目</a></p></li><li><p><a href="https://mirrors.aliyun.com/apache/flink/">阿里云源——反向代理Apache软件基金会的项目</a></p></li><li><p>……….</p></li></ol><h3 id="国外-7"><a href="#国外-7" class="headerlink" title="国外"></a>国外</h3><ol><li><p><a href="https://downloads.apache.org/flink/">Apache软件基金会Flink项目历史存档</a></p></li><li><p><a href="https://archive.apache.org/dist/flink/">Apache Flink项目的各版本目录</a></p></li><li><p>……….</p></li></ol>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>大数据</tag>
<tag>Hadoop</tag>
<tag>ZooKeeper</tag>
<tag>Kafka</tag>
<tag>Spark</tag>
<tag>Storm</tag>
<tag>HBase</tag>
</tags>
</entry>
<entry>
<title>Kubernetes简介</title>
<link href="/2024/12/02/Kubernetes%E4%BB%8B%E7%BB%8D/"/>
<url>/2024/12/02/Kubernetes%E4%BB%8B%E7%BB%8D/</url>
<content type="html"><![CDATA[<h1 id="Kubernetes介绍"><a href="#Kubernetes介绍" class="headerlink" title="Kubernetes介绍"></a>Kubernetes介绍</h1><p>它是一个为容器化应用提供集群部署和管理的开源工具;</p><h2 id="特性"><a href="#特性" class="headerlink" title="特性"></a>特性</h2><ul><li><p>高可用、不宕机、自动灾难恢复</p></li><li><p>灰度更新,不影响业务正常流转</p></li><li><p>一键回滚到历史版本</p></li><li><p>方便的伸缩扩展(应用伸缩、机器加减)、提供负载均衡</p></li><li><p>有一个完善的生态</p></li></ul><h2 id="应用的部署方式"><a href="#应用的部署方式" class="headerlink" title="应用的部署方式"></a>应用的部署方式</h2><ol><li>传统部署(物理机部署)</li></ol><p>应用直接部署在物理机上,机器资源分配不好控制;出现Bug时,可能机器的大部分载运被某个应用占用,会导致其他应用无法正常运行,无法做到应用隔离</p><ol start="2"><li>虚拟机部署</li></ol><p>在单个物理机上运行多个虚拟机,诶个虚拟机都是完整独立的系统,性能损耗大</p><ol start="3"><li>容器部署</li></ol><p>所有容器共享主机的系统,轻量级的虚拟机,性能损耗小,资源隔离,CPU和内存可按需分配</p><h2 id="什么时候需要"><a href="#什么时候需要" class="headerlink" title="什么时候需要"></a>什么时候需要</h2><ul><li><p>如果应用只跑在一台机器上,docker+(docker-compose)就够了,方便轻松;</p></li><li><p>如果应用需要跑在3、4台机器上,docker+(docker-compose)+负载均衡器也能解决;</p></li><li><p>当应用的访问数不断增加,机器数逐渐增加,这时候k8s就能轻松管理百千万台机器的集群</p></li></ul><h2 id="集群架构"><a href="#集群架构" class="headerlink" title="集群架构"></a>集群架构</h2><p><img src="/img/assets/2024-07-29-10-55-21-image.png"></p><h3 id="master"><a href="#master" class="headerlink" title="master"></a>master</h3><p>主节点,控制平台,不需要很高的性能,不会跑任务,通常一个就行;也可以增加多个主节点来提高系统的可用性</p><h3 id="woker"><a href="#woker" class="headerlink" title="woker"></a>woker</h3><p>工作节点,可以是虚拟机或物理计算机,任务都在这里运行;这里的机器性能需要好点,通常有很多个这样的节点;每一个工作节点都由主节点管理;</p><h3 id="Pod"><a href="#Pod" class="headerlink" title="Pod"></a>Pod</h3><p>是k8s调度、管理的最小单位,一个Pod可以包含一个或多个容器,每一个Pod都有自己的虚拟ip,一个工作节点可以拥有多个pod,主节点会考量每一个工作节点的负载,随后自动调度pod到哪个节点运行;</p><h2 id="kubernetes组件"><a href="#kubernetes组件" class="headerlink" title="kubernetes组件"></a>kubernetes组件</h2><p><img src="/img/assets/2024-07-29-11-05-39-image.png"></p><ul><li><p>kube-apiserver:API服务器,公开了kubernetes的api</p></li><li><p>etcd:键值数据库,可以作为保存kubernetes所有集群数据的后台数据库</p></li><li><p>kube-scheduler:调度Pod到哪个节点运行</p></li><li><p>kube-controller:集群控制器</p></li><li><p>cloud-controller:与云服务商进行交互</p></li></ul><h2 id="安装方式"><a href="#安装方式" class="headerlink" title="安装方式"></a>安装方式</h2><ol><li>minikube</li></ol><p>只是一个k8s集群模拟器,只有一个节点的集群,只为测试用,master和worker都在一起</p><ol start="2"><li>直接用云平台安装kubernettes</li></ol><p>可视化搭建,只需几步就可以创建好一个集群,生态齐全</p><ol start="3"><li>裸机安装(bare metal)</li></ol><p>至少需要两台机器(主节点、工作节点各一台),需要自己安装kubernetes组件,配置麻烦,缺少生态支持;</p>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>云计算</tag>
</tags>
</entry>
<entry>
<title>搭建分布式Kafka集群</title>
<link href="/2024/12/01/%E6%90%AD%E5%BB%BA%E5%88%86%E5%B8%83%E5%BC%8FKafka%E9%9B%86%E7%BE%A4/"/>
<url>/2024/12/01/%E6%90%AD%E5%BB%BA%E5%88%86%E5%B8%83%E5%BC%8FKafka%E9%9B%86%E7%BE%A4/</url>
<content type="html"><![CDATA[<h1 id="搭建分布式Kafka集群"><a href="#搭建分布式Kafka集群" class="headerlink" title="搭建分布式Kafka集群"></a>搭建分布式Kafka集群</h1><blockquote><p>在主节点上安装<code>Kafka</code>;</p><p><code>Kafka</code>使用<code>Zookeeper</code>服务器来存储元数据信息</p></blockquote><ul><li>本次实验环境:Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeeper-3.6.3、Kafka(2.11-2.3.1)</li></ul><h2 id="前提"><a href="#前提" class="headerlink" title="前提"></a>前提</h2><ul><li><p>在<code>Kafka-2.8.0</code>版本以前,运行Kafka需要预先安装<code>Zookeeper</code></p></li><li><p>在<code>Kafka 2.8.0</code>版本以后,引入了<strong>Kraft</strong>(Kafka Raft)模式,可以使Kafka在不依赖外部<code>Zookeeper</code>的前提下运行</p></li><li><p>除此之外<code>Kafka</code>由<code>Scala</code>语言编写,而<code>Scala</code>语言是由<code>JAVA</code>语言发展而来,所以需要JVM的运行环境</p></li></ul><h2 id="功能规划"><a href="#功能规划" class="headerlink" title="功能规划"></a>功能规划</h2><table><thead><tr><th align="center">Master</th><th align="center">Slave1</th><th align="center">Slave2</th></tr></thead><tbody><tr><td align="center">主节点</td><td align="center">代理服务器</td><td align="center">代理服务器</td></tr><tr><td align="center">192.168.66.6</td><td align="center">192.168.66.7</td><td align="center">192.168.66.21</td></tr></tbody></table><h2 id="开始安装"><a href="#开始安装" class="headerlink" title="开始安装"></a>开始安装</h2><h3 id="1-上传Kafka服务器"><a href="#1-上传Kafka服务器" class="headerlink" title="1. 上传Kafka服务器"></a>1. 上传Kafka服务器</h3><ul><li>首先上传/下载Kafka的文件到服务器上,或直接进行以下的下载行为</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 使用wget命令下载Kafka文件(二选一)</span><br>wget -P /tmp/ -c <span class="hljs-string">'https://repo.huaweicloud.com/artifactory/apache-local/kafka/2.3.1/kafka_2.11-2.3.1.tgz'</span><br><br><span class="hljs-comment"># 使用curl命令下载Kafka文件(二选一)</span><br>curl -C - <span class="hljs-string">'https://repo.huaweicloud.com/artifactory/apache-local/spark/spark-3.2.1/spark-3.2.1-bin-hadoop2.7.tgz'</span> -O /tmp/<br><br><span class="hljs-comment"># 解压文件到指定目录</span><br>tar -zxvf /tmp/kafka_2.11-2.3.1.tgz -C /opt/module/<br><br><span class="hljs-comment"># 重命名文件夹</span><br><span class="hljs-built_in">mv</span> /opt/module/kafka_2.11-2.3.1/ /opt/module/kafka<br><br><br></code></pre></td></tr></table></figure><h3 id="2-配置用户环境变量"><a href="#2-配置用户环境变量" class="headerlink" title="2. 配置用户环境变量"></a>2. 配置用户环境变量</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cat</span> >> ~/.bashrc << <span class="hljs-string">"EOF"</span><br><br><span class="hljs-comment"># ------------------- Kafka 配置--------------------</span><br><span class="hljs-comment"># 设置Kafka环境变量,指向Kafka安装目录</span><br><span class="hljs-built_in">export</span> KAFKA_HOME=/opt/module/kafka<br><br><span class="hljs-comment"># 将Kafka的bin目录添加到PATH环境变量</span><br><span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$PATH</span>:<span class="hljs-variable">$KAFKA_HOME</span>/bin<br><span class="hljs-comment"># -------------------------------------------------</span><br>EOF<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash">-----------------------------------------------------------<br> 说明<br><br>举例 <span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$Kafka_HOME</span>/bin:<span class="hljs-variable">$PATH</span><br><br>英文冒号代表分隔<br><br>这段代码表示<br>1. 当你输入一个命令时,shell会首先在<span class="hljs-string">"KAFKA_HOME"</span>这个变量的<span class="hljs-string">"bin"</span>子目录中查找,<br>2. 最后,若找不到,则在<span class="hljs-string">"PATH"</span>的指定目录中查找<br><br>-------------------------------------------------------------<br></code></pre></td></tr></table></figure><h3 id="3-修改配置文件"><a href="#3-修改配置文件" class="headerlink" title="3. 修改配置文件"></a>3. 修改配置文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 创建Kafka日志目录</span><br><span class="hljs-built_in">mkdir</span> /opt/module/kafka/logs<br><br><span class="hljs-comment"># 备份kafka配置文件</span><br><span class="hljs-built_in">cp</span> /opt/module/kafka/config/server.properties /opt/module/kafka/config/server.properties.bak<br><br><span class="hljs-comment"># 修改Kafka的日志存储目录</span><br>sed -i <span class="hljs-string">'s|log.dirs=/tmp/kafka-logs|log.dirs=/opt/module/kafka/logs|'</span> /opt/module/kafka/config/server.properties<br><br><span class="hljs-comment"># 配置Kafka依靠指定ZooKeeper服务器进行集群管理和元数据存储</span><br>sed -i <span class="hljs-string">'s|zookeeper.connect=localhost:2181|zookeeper.connect=master:2181,slave1:2181,slave2:2181|'</span> /opt/module/kafka/config/server.properties<br><br>----------------------------------------------<br> 说明<br><br>1. 可以使用IP地址或使用主机名,前提是配置好hosts/DNS解析<br>2. 根据自己的配置,修改连接的主机的信息<br>-----------------------------------------------<br><br><br></code></pre></td></tr></table></figure><h3 id="4-同步文件"><a href="#4-同步文件" class="headerlink" title="4. 同步文件"></a>4. 同步文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 同步到slave1机器</span><br>scp -r /opt/module/kafka/ slave1:/opt/module/<br>scp ~/.bashrc root@slave1:/root<br><br><span class="hljs-comment"># 同步到slave2机器</span><br>scp -r /opt/module/kafka/ slave2:/opt/module/<br>scp ~/.bashrc root@slave2:/root<br></code></pre></td></tr></table></figure><h3 id="5-修改从节点配置"><a href="#5-修改从节点配置" class="headerlink" title="5. 修改从节点配置"></a>5. 修改从节点配置</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 修改Slave1的broker-ID值</span><br>ssh slave1 <span class="hljs-string">"sed -i 's|broker.id=0|broker.id=1|' /opt/module/kafka/config/server.properties"</span><br><br><span class="hljs-comment"># 修改Slave2的broker-ID值</span><br>ssh slave2 <span class="hljs-string">"sed -i 's|broker.id=0|broker.id=2|' /opt/module/kafka/config/server.properties"</span><br><br></code></pre></td></tr></table></figure><h3 id="6-环境变量生效"><a href="#6-环境变量生效" class="headerlink" title="6. 环境变量生效"></a>6. 环境变量生效</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># master节点环境变量生效</span><br><span class="hljs-built_in">source</span> ~/.bashrc<br><br><span class="hljs-comment"># slave1节点环境变量生效</span><br>ssh slave1 <span class="hljs-string">'source ~/.bashrc'</span><br><br><span class="hljs-comment"># slave2节点环境变量生效</span><br>ssh slave2 <span class="hljs-string">'source ~/.bashrc'</span><br></code></pre></td></tr></table></figure><h2 id="安装结束"><a href="#安装结束" class="headerlink" title="安装结束"></a>安装结束</h2><h3 id="7-前台启动一台Kafka服务器"><a href="#7-前台启动一台Kafka服务器" class="headerlink" title="7. 前台启动一台Kafka服务器"></a>7. 前台启动一台Kafka服务器</h3><blockquote><p>在当前控制台前台启动Kafka,使用<code>Ctrl``C</code>停止kafka</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 在master节点上执行</span><br>kafka-server-start.sh <span class="hljs-variable">$KAFKA_HOME</span>/config/server.properties <br></code></pre></td></tr></table></figure><h3 id="8-后台启动Kafka服务器集群"><a href="#8-后台启动Kafka服务器集群" class="headerlink" title="8. 后台启动Kafka服务器集群"></a>8. 后台启动Kafka服务器集群</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 在master节点上执行</span><br><span class="hljs-built_in">nohup</span> <span class="hljs-variable">$KAFKA_HOME</span>/bin/kafka-server-start.sh <span class="hljs-variable">$KAFKA_HOME</span>/config/server.properties > <span class="hljs-variable">$KAFKA_HOME</span>/logs/nohup.out 2>&1 &<br><br><span class="hljs-comment"># 在slave1节点上执行</span><br>ssh slave1<br><span class="hljs-built_in">nohup</span> <span class="hljs-variable">$KAFKA_HOME</span>/bin/kafka-server-start.sh <span class="hljs-variable">$KAFKA_HOME</span>/config/server.properties > <span class="hljs-variable">$KAFKA_HOME</span>/logs/nohup.out 2>&1 & <br><span class="hljs-built_in">exit</span><br><br><span class="hljs-comment"># 在slave2节点上执行</span><br>ssh slave2 <br><span class="hljs-built_in">nohup</span> <span class="hljs-variable">$KAFKA_HOME</span>/bin/kafka-server-start.sh <span class="hljs-variable">$KAFKA_HOME</span>/config/server.properties > <span class="hljs-variable">$KAFKA_HOME</span>/logs/nohup.out 2>&1 & <br><span class="hljs-built_in">exit</span><br></code></pre></td></tr></table></figure><h3 id="9-查看kafka进程"><a href="#9-查看kafka进程" class="headerlink" title="9.查看kafka进程"></a>9.查看kafka进程</h3><ul><li><p>master会有<code>Kafka</code>的进程</p></li><li><p>slave1会有<code>Kafka</code>的进程</p></li><li><p>slave2会有<code>Kafka</code>的进程</p></li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 命令</span><br>jps<br></code></pre></td></tr></table></figure><h3 id="10-停止Kafka"><a href="#10-停止Kafka" class="headerlink" title="10. 停止Kafka"></a>10. 停止Kafka</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 停止master节点的Kafka服务</span><br>kafka-server-stop.sh<br><br><span class="hljs-comment"># 停止slave1节点的Kafka服务</span><br>ssh slave1 kafka-server-stop.sh<br><br><span class="hljs-comment"># 停止slave2节点的Kafka服务</span><br>ssh slave2 kafka-server-stop.sh<br></code></pre></td></tr></table></figure><h1 id="参考文档"><a href="#参考文档" class="headerlink" title="参考文档"></a>参考文档</h1><ol><li><p><a href="https://blog.csdn.net/m0_56659620/article/details/140150054">Linux 搭建 Kafka 环境 - 详细教程_linux安装kafka-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/weixin_43495317/article/details/103499846">kafka-2.3.1版本的安装_kafka2.3.1下载-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/qq_26594041/article/details/141299025">JVM-合理配置堆内存_xms和xmx设置多少合适-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/liuyu973971883/article/details/108995492">Kafka的分布式安装及基本操作-刘宇_头歌kafka安装-CSDN博客</a></p></li></ol>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>大数据</tag>
<tag>Kafka</tag>
</tags>
</entry>
<entry>
<title>搭建Flume</title>
<link href="/2024/11/30/%E6%90%AD%E5%BB%BAFlume/"/>
<url>/2024/11/30/%E6%90%AD%E5%BB%BAFlume/</url>
<content type="html"><![CDATA[<h1 id="搭建Flume"><a href="#搭建Flume" class="headerlink" title="搭建Flume"></a>搭建Flume</h1><ul><li>本次实验环境:Centos 7-2009、JDK 8、Flume-1.11.0</li></ul><h2 id="开始安装"><a href="#开始安装" class="headerlink" title="开始安装"></a>开始安装</h2><h3 id="1-下载安装文件到服务器"><a href="#1-下载安装文件到服务器" class="headerlink" title="1. 下载安装文件到服务器"></a>1. 下载安装文件到服务器</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 使用wget命令下载flume文件(二选一)</span><br>wget -P /tmp/ -c <span class="hljs-string">'https://mirrors.aliyun.com/apache/flume/1.11.0/apache-flume-1.11.0-bin.tar.gz'</span><br><br><span class="hljs-comment"># 使用curl命令下载flume文件(二选一)</span><br>curl -C - <span class="hljs-string">'https://mirrors.aliyun.com/apache/flume/1.11.0/apache-flume-1.11.0-bin.tar.gz'</span> -O /tmp/<br></code></pre></td></tr></table></figure><h3 id="2-安装程序"><a href="#2-安装程序" class="headerlink" title="2. 安装程序"></a>2. 安装程序</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 解压文件到指定文件夹</span><br>tar -zxvf /tmp/apache-flume-1.11.0-bin.tar.gz -C /opt/module/<br><br><span class="hljs-comment"># 重命名文件夹</span><br><span class="hljs-built_in">mv</span> /opt/module/apache-flume-1.11.0-bin /opt/module/flume<br></code></pre></td></tr></table></figure><h3 id="3-修改配置文件"><a href="#3-修改配置文件" class="headerlink" title="3. 修改配置文件"></a>3. 修改配置文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 复制配置文件</span><br><span class="hljs-built_in">cp</span> /opt/module/flume/conf/flume-env.sh.template /opt/module/flume/conf/flume-env.sh<br><br><span class="hljs-comment"># 添加JAVA配置</span><br><span class="hljs-built_in">cat</span> >> /opt/module/flume/conf/flume-env.sh << <span class="hljs-string">EOF</span><br><span class="hljs-string">export JAVA_HOME=/opt/module/jdk1.8.0_202</span><br><span class="hljs-string">export FLUME_CONF_DIR=/opt/module/flume/conf</span><br><span class="hljs-string">EOF</span><br><br>---------------------------<br> 说明<br>根据自己的配置信息,或者查看~/.bashrc,修改JAVA_HOME的目录,随后复制粘贴即可<br><br>---------------------------<br><br><br></code></pre></td></tr></table></figure><h3 id="4-配置用户环境变量"><a href="#4-配置用户环境变量" class="headerlink" title="4. 配置用户环境变量"></a>4. 配置用户环境变量</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cat</span> >> ~/.bashrc << <span class="hljs-string">"EOF"</span><br><br><span class="hljs-comment"># ------------------- Flume 配置--------------------</span><br><span class="hljs-comment"># 设置Flume环境变量,指向Flume安装目录</span><br><span class="hljs-built_in">export</span> FLUME_HOME=/opt/module/flume<br><br><span class="hljs-comment"># 将Flume的bin目录添加到PATH环境变量</span><br><span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$PATH</span>:<span class="hljs-variable">$FLUME_HOME</span>/bin<br><span class="hljs-comment"># -------------------------------------------------</span><br>EOF<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash">-----------------------------------------------------------<br> 说明<br><br>举例 <span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$FLUME_HOME</span>/bin:<span class="hljs-variable">$PATH</span><br><br>英文冒号代表分隔<br><br>这段代码表示<br>1. 当你输入一个命令时,shell会首先在<span class="hljs-string">"FLUME_HOME"</span>这个变量的<span class="hljs-string">"bin"</span>子目录中查找,<br>2. 最后,若找不到,则在<span class="hljs-string">"PATH"</span>的指定目录中查找<br><br>-------------------------------------------------------------<br></code></pre></td></tr></table></figure><h3 id="5-加载环境变量"><a href="#5-加载环境变量" class="headerlink" title="5. 加载环境变量"></a>5. 加载环境变量</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 在master主节点上执行</span><br><span class="hljs-built_in">source</span> ~/.bashrc<br></code></pre></td></tr></table></figure><h2 id="安装完成"><a href="#安装完成" class="headerlink" title="安装完成"></a>安装完成</h2><h3 id="6-测试"><a href="#6-测试" class="headerlink" title="6. 测试"></a>6. 测试</h3><blockquote><ul><li><p>a1.sources.r1.command=tail -F /opt/module/flume/test/1.log</p></li><li><p>a1.sinks.k1.hdfs.path=hdfs://master:8020/flume/<br>这两条需要按照自己的路径修改,并创建test文件和1.log文件用于测试</p></li></ul></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cat</span> > /opt/module/flume/conf/hdfs-avro.conf << <span class="hljs-string">EOF</span><br><span class="hljs-string">#配置Agent</span><br><span class="hljs-string">a1.sources = r1</span><br><span class="hljs-string">#数据沉淀,可以多个,中间用空格分隔</span><br><span class="hljs-string">a1.sinks = c1</span><br><span class="hljs-string">#传输管道一般只有一个,可以多个</span><br><span class="hljs-string">a1.channels = c1</span><br><span class="hljs-string"></span><br><span class="hljs-string">#配置source消息生产者</span><br><span class="hljs-string">#exec可以通过制定的操作对日志进行读取,使用exec时需要指定xsheel命令,对日志进行读取</span><br><span class="hljs-string">a1.sources.r1.type=exec</span><br><span class="hljs-string">a1.sources.r1.command=tail -F /opt/module/flume/test/1.log</span><br><span class="hljs-string"></span><br><span class="hljs-string">#配置channel,将buffer事件存放在内存中,相当于数据缓存区,接受source数据发送给sink</span><br><span class="hljs-string">#传输管道的参数,类型是内存传输</span><br><span class="hljs-string">a1.channels.c1.type=memory</span><br><span class="hljs-string">#存储在通管中的最大事件数</span><br><span class="hljs-string">a1.channels.c1.capactipy=100</span><br><span class="hljs-string">#收集端的sink会在收集到了1000条以后再去提交失误</span><br><span class="hljs-string">a1.channels.c1.transactionCapcity=10</span><br><span class="hljs-string"></span><br><span class="hljs-string">#配置sink接收器</span><br><span class="hljs-string">#沉淀方式时控制台答应,还可以有其他方式,如上传到hdfs</span><br><span class="hljs-string">a1.sinks.k1.type=hdfs</span><br><span class="hljs-string">#设置hdfs接收器</span><br><span class="hljs-string">a1.sinks.k1.hdfs.path=hdfs://master:8020/flume</span><br><span class="hljs-string"></span><br><span class="hljs-string">#设置</span><br><span class="hljs-string">a1.sinks.k1.hdfs.filePrefix=test</span><br><span class="hljs-string">a1.sinks.k1.hdfs.fileType=DataStream</span><br><span class="hljs-string"></span><br><span class="hljs-string">#把source和sink绑定在channel上</span><br><span class="hljs-string">#指定传输管道</span><br><span class="hljs-string">a1.sources.r1.channels=c1</span><br><span class="hljs-string">#设置数据沉淀接受的管道</span><br><span class="hljs-string">a1.sinks.k1.channel=c1</span><br><span class="hljs-string"></span><br><span class="hljs-string">EOF</span><br></code></pre></td></tr></table></figure><h3 id="7-前台启动Flume"><a href="#7-前台启动Flume" class="headerlink" title="7. 前台启动Flume"></a>7. 前台启动Flume</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">flume-ng agent -c <span class="hljs-variable">$FLUME_HOME</span>/conf -f <span class="hljs-variable">$FLUME_HOME</span>/conf/hdfs-avro.conf -n a1 -Dflume.root.logger=INFO,console<br></code></pre></td></tr></table></figure><h3 id="8-后台启动Flume"><a href="#8-后台启动Flume" class="headerlink" title="8. 后台启动Flume"></a>8. 后台启动Flume</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 创建日志文件目录</span><br><span class="hljs-built_in">mkdir</span> /opt/module/flume/logs<br><span class="hljs-comment"># 在master节点上执行</span><br><span class="hljs-built_in">nohup</span> flume-ng agent -c <span class="hljs-variable">$FLUME_HOME</span>/conf -f <span class="hljs-variable">$FLUME_HOME</span>/conf/hdfs-avro.conf -n a1 -Dflume.root.logger=INFO,console > <span class="hljs-variable">$FLUME_HOME</span>/logs/nohup.out 2>&1 &<br></code></pre></td></tr></table></figure><h1 id="参考文档"><a href="#参考文档" class="headerlink" title="参考文档"></a>参考文档</h1><ol><li><p><a href="https://flume.apache.org/download.html">Download — Apache Flume</a></p></li><li><p><a href="https://www.apache.org/dyn/closer.lua/flume/1.11.0/apache-flume-1.11.0-bin.tar.gz">Apache Download Mirrors</a></p></li><li><p><a href="https://archive.apache.org/dist/flume/">Index of /dist/flume</a></p></li><li><p><a href="https://blog.csdn.net/NITIQ/article/details/121435178">hadoop-flume完全分布式集群搭建-CSDN博客</a></p></li><li><p><a href="https://www.cnblogs.com/yuanfeng10/articles/18294886">flume-1.11.0 - Bigdata_Yuan - 博客园</a></p></li><li><p><a href="https://blog.csdn.net/shanxiderenheni/article/details/132729592">flume1.11.0安装部署-CSDN博客</a></p></li><li><p><a href="https://mirrors.aliyun.com/apache/flume/1.11.0/">apache-flume-1.11.0安装包下载_开源镜像站-阿里云</a></p></li></ol>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>大数据</tag>
<tag>Flume</tag>
</tags>
</entry>
<entry>
<title>搭建MongoDB</title>
<link href="/2024/11/30/%E6%90%AD%E5%BB%BAMongoDB/"/>
<url>/2024/11/30/%E6%90%AD%E5%BB%BAMongoDB/</url>
<content type="html"><![CDATA[<h1 id="搭建MongoDB"><a href="#搭建MongoDB" class="headerlink" title="搭建MongoDB"></a>搭建MongoDB</h1><ul><li>环境:Centos 7-2009</li></ul><h2 id="1-创建MongoDB的国内yum源"><a href="#1-创建MongoDB的国内yum源" class="headerlink" title="1. 创建MongoDB的国内yum源"></a>1. 创建MongoDB的国内yum源</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 下载Centos7对应最新版7.0.15的安装包</span><br><span class="hljs-built_in">cat</span> >> /etc/yum.repos.d/mongodb.repo << <span class="hljs-string">"EOF"</span><br>[mongodb-org]<br>name=MongoDB Repository<br>baseurl=https://mirror.iscas.ac.cn/mongodb/yum/el<span class="hljs-variable">$releasever</span>/<br>gpgcheck=0<br>enabled=1<br>EOF<br></code></pre></td></tr></table></figure><h2 id="2-安装MongoDB"><a href="#2-安装MongoDB" class="headerlink" title="2. 安装MongoDB"></a>2. 安装MongoDB</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 刷新yum缓存</span><br><span class="hljs-built_in">sudo</span> yum makecache<br><br><span class="hljs-comment"># 安装MongoDB</span><br><span class="hljs-built_in">sudo</span> yum install -y mongodb-org <br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 修改监听的ip地址为任何地址,否则无法远程连接MongoDB数据库</span><br>sed -i <span class="hljs-string">'s|bindIp: 127.0.0.1|bindIp: 0.0.0.0|'</span> /etc/mongod.conf <br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 需要注意,需要支持AVX指令集的CPU才能启动MongoDB</span><br><span class="hljs-built_in">cat</span> /proc/cpuinfo | grep avx<br><span class="hljs-comment"># 若没有输出,则不支持AVX指令集,则无法使用MongoDB</span><br><br><span class="hljs-comment"># 开启MongoDB开机自启</span><br>systemctl <span class="hljs-built_in">enable</span> mongod<br><br><span class="hljs-comment"># 启动MongoDB</span><br>systemctl start mongod<br><br><span class="hljs-comment"># 查看MongoDB状态</span><br>systemctl status mongod<br><br><span class="hljs-comment"># 停止MongoDB</span><br>systemctl stop mongod<br></code></pre></td></tr></table></figure><h2 id="3-连接数据库"><a href="#3-连接数据库" class="headerlink" title="3. 连接数据库"></a>3. 连接数据库</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 重启MongoDB</span><br>systemctl restart mongod<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 对于MongoDB 6.0版本以上需要安装MongoDB-shell环境</span><br><span class="hljs-comment"># 对于MongoDB 7.0以上版本,使用mongosh进行连接</span><br>mongosh 主机名或者IP<br></code></pre></td></tr></table></figure><h1 id="参考文档"><a href="#参考文档" class="headerlink" title="参考文档"></a>参考文档</h1><ol><li><p><a href="https://blog.csdn.net/chenlixiao007/article/details/110206062">https://blog.csdn.net/chenlixiao007/article/details/110206062</a></p></li><li><p><a href="https://help.mirrors.cernet.edu.cn/mongodb/">MongoDB 软件仓库镜像使用帮助 - MirrorZ Help</a></p></li><li><p><a href="https://blog.csdn.net/chenlixiao007/article/details/110206062">Linux CentOS7 环境下安装 MongoDB_linux centos7 安装mongo客户端-CSDN博客</a></p></li><li><p><a href="https://help.mirrors.cernet.edu.cn/mongodb/">MongoDB 软件仓库镜像使用帮助 - MirrorZ Help</a></p></li></ol>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>大数据</tag>
<tag>MongoDB</tag>
</tags>
</entry>
<entry>
<title>搭建分布式Hive集群</title>
<link href="/2024/11/29/%E6%90%AD%E5%BB%BA%E5%88%86%E5%B8%83%E5%BC%8FHive%E9%9B%86%E7%BE%A4/"/>
<url>/2024/11/29/%E6%90%AD%E5%BB%BA%E5%88%86%E5%B8%83%E5%BC%8FHive%E9%9B%86%E7%BE%A4/</url>
<content type="html"><![CDATA[<h1 id="搭建分布式Hive集群"><a href="#搭建分布式Hive集群" class="headerlink" title="搭建分布式Hive集群"></a>搭建分布式Hive集群</h1><ul><li>本次实验环境:Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeeper-3.6.3、Mysql-5.7.38、Hive-3.1.2</li></ul><h2 id="功能规划"><a href="#功能规划" class="headerlink" title="功能规划"></a>功能规划</h2><h3 id="方案一(本地运行模式)"><a href="#方案一(本地运行模式)" class="headerlink" title="方案一(本地运行模式)"></a>方案一(本地运行模式)</h3><table><thead><tr><th align="center">Master</th></tr></thead><tbody><tr><td align="center">主节点(Mysql+Hive)</td></tr><tr><td align="center">192.168.66.6</td></tr></tbody></table><h3 id="方案二(完全分布式模式)"><a href="#方案二(完全分布式模式)" class="headerlink" title="方案二(完全分布式模式)"></a>方案二(完全分布式模式)</h3><table><thead><tr><th align="center">Master</th><th align="center">Slave1</th></tr></thead><tbody><tr><td align="center">主节点(Hive)</td><td align="center">数据存储节点(Mysql)</td></tr><tr><td align="center">192.168.66.6</td><td align="center">192.168.66.7</td></tr></tbody></table><h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><blockquote><p>若使用方案一,则在master节点上进行”准备工作“</p><ul><li>若使用方案二,则在slave1节点上进行“准备工作”</li></ul></blockquote><h3 id="1-卸载以及删除自带的mariadb"><a href="#1-卸载以及删除自带的mariadb" class="headerlink" title="1. 卸载以及删除自带的mariadb"></a>1. 卸载以及删除自带的mariadb</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 查看cent7自带的mariadb包</span><br>rpm -qa | grep mariadb<br><br><span class="hljs-comment"># 这条是centos7自带的数据库安装包 mariadb-libs-5.5.68-1.el7.x86_64</span><br><br><span class="hljs-comment"># 删除自带的数据库安装包</span><br>rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps<br></code></pre></td></tr></table></figure><h3 id="2-安装Mysql的release文件"><a href="#2-安装Mysql的release文件" class="headerlink" title="2. 安装Mysql的release文件"></a>2. 安装Mysql的release文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 使用wget下载Mysql5.7.x版本的release文件(二选一)</span><br>wget -P /tmp/ -c <span class="hljs-string">'https://mirrors.ustc.edu.cn/mysql-repo/mysql57-community-release-el7.rpm'</span><br><br><span class="hljs-comment"># 使用curl下载Mysql5.7.x版本的release文件(二选一)</span><br>curl -C - <span class="hljs-string">'https://mirrors.ustc.edu.cn/mysql-repo/mysql57-community-release-el7.rpm'</span> -O /tmp/<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 导入release的GPG秘钥</span><br>rpm --import https://mirrors.ustc.edu.cn/mysql-repo/RPM-GPG-KEY-mysql<br><br><span class="hljs-comment"># 安装Mysql的release包</span><br>yum install -y /tmp/mysql57-community-release-el7.rpm<br></code></pre></td></tr></table></figure><h3 id="3-安装Mysql"><a href="#3-安装Mysql" class="headerlink" title="3. 安装Mysql"></a>3. 安装Mysql</h3><h4 id="3-1-(二选一)使用直接通过国内镜像下载依赖包并安装"><a href="#3-1-(二选一)使用直接通过国内镜像下载依赖包并安装" class="headerlink" title="3.1 (二选一)使用直接通过国内镜像下载依赖包并安装"></a>3.1 (二选一)使用直接通过国内镜像下载依赖包并安装</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 下载mysql-community-server</span><br>wget -P /tmp/ -c <span class="hljs-string">'https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-server-5.7.44-1.el7.x86_64.rpm'</span><br><br><span class="hljs-comment"># 下载mysql-community-client</span><br>wget -P /tmp/ -c <span class="hljs-string">'https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-client-5.7.44-1.el7.x86_64.rpm'</span><br><br><span class="hljs-comment"># 下载mysql-community-common</span><br>wget -P /tmp/ -c <span class="hljs-string">'https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-common-5.7.44-1.el7.x86_64.rpm'</span><br><br><span class="hljs-comment"># 下载mysql-community-libs</span><br>wget -P /tmp/ -c <span class="hljs-string">'https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-libs-5.7.44-1.el7.x86_64.rpm'</span><br><br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 安装Mysql-server</span><br>yum install -y /tmp/mysql-community*<br></code></pre></td></tr></table></figure><h4 id="3-2-(二选一)使用国内yum源进行一键安装"><a href="#3-2-(二选一)使用国内yum源进行一键安装" class="headerlink" title="3.2 (二选一)使用国内yum源进行一键安装"></a>3.2 (二选一)使用国内yum源进行一键安装</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 导入GPG公钥</span><br>rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022<br><br><span class="hljs-comment"># 备份原Mysql的yum源</span><br><span class="hljs-built_in">cd</span> /etc/yum.repos.d/<br><span class="hljs-built_in">mv</span> mysql-community.repo mysql-community.repo.bak<br><span class="hljs-built_in">mv</span> mysql-community-source.repo mysql-community-source.repo.bak<br><br><span class="hljs-comment"># 添加国内Mysql的yum源</span><br><span class="hljs-built_in">cat</span> >> mysql-community.repo << <span class="hljs-string">"EOF"</span><br>[mysql-connectors-community]<br>name=MySQL Connectors Community<br>baseurl=https://mirror.iscas.ac.cn/mysql/yum/mysql-connectors-community-el7-<span class="hljs-variable">$basearch</span>/<br>enabled=1<br>gpgcheck=1<br>gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql<br> https://repo.mysql.com/RPM-GPG-KEY-mysql-2022<br><br>[mysql-tools-community]<br>name=MySQL Tools Community<br>baseurl=https://mirror.iscas.ac.cn/mysql/yum/mysql-tools-community-el7-<span class="hljs-variable">$basearch</span>/<br>enabled=1<br>gpgcheck=1<br>gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql<br> https://repo.mysql.com/RPM-GPG-KEY-mysql-2022<br><br>[mysql-5.7-community]<br>name=MySQL 5.7 Community Server<br>baseurl=https://mirror.iscas.ac.cn/mysql/yum/mysql-5.7-community-el7-<span class="hljs-variable">$basearch</span>/<br>enabled=1<br>gpgcheck=1<br>gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql<br> https://repo.mysql.com/RPM-GPG-KEY-mysql-2022<br>EOF<br><span class="hljs-comment"># 清除yum的旧缓存,并更新的yum源的缓存</span><br>yum clean all && yum makecache<br><br><span class="hljs-comment"># 安装Mysql-server</span><br>yum install -y mysql-server<br></code></pre></td></tr></table></figure><h3 id="4-启动Mysql"><a href="#4-启动Mysql" class="headerlink" title="4. 启动Mysql"></a>4. 启动Mysql</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 配置Mysql开机自启</span><br>systemctl <span class="hljs-built_in">enable</span> mysqld<br><br><span class="hljs-comment"># 启动Mysql</span><br>systemctl start mysqld<br><br><span class="hljs-comment"># 查看Mysql状态</span><br>systemctl status mysqld<br></code></pre></td></tr></table></figure><h3 id="5-配置Mysql"><a href="#5-配置Mysql" class="headerlink" title="5. 配置Mysql"></a>5. 配置Mysql</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 查看安装后随机生成的Mysql密码</span><br>grep <span class="hljs-string">'A temporary password'</span> /var/log/mysqld.log<br><br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 登录数据库</span><br>mysql -uroot -p<span class="hljs-string">'你自己查到的密码'</span><br><br><span class="hljs-comment"># 重置默认的随机密码(不进行无法操作数据库)</span><br>ALTER USER <span class="hljs-string">'root'</span>@<span class="hljs-string">'localhost'</span> IDENTIFIED BY <span class="hljs-string">'新密码'</span>;<br><br><span class="hljs-comment"># 退出数据库</span><br><span class="hljs-built_in">exit</span><br></code></pre></td></tr></table></figure><h3 id="6-创建用于存储Hive数据的用户"><a href="#6-创建用于存储Hive数据的用户" class="headerlink" title="6. 创建用于存储Hive数据的用户"></a>6. 创建用于存储Hive数据的用户</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs sql"># 必须要先退出服务器,使用新的密码进入数据库才能操作<br>mysql <span class="hljs-operator">-</span>uroot <span class="hljs-operator">-</span>p<span class="hljs-string">'新密码'</span><br><br># 创建名为Hiv的数据库<br><span class="hljs-keyword">CREATE</span> DATABASE hive;<br><br># 创建名为hive的用户,并设置密码<br><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">USER</span> <span class="hljs-string">'hive'</span>@<span class="hljs-string">'%'</span> IDENTIFIED <span class="hljs-keyword">BY</span> <span class="hljs-string">'hive用户的密码'</span>;<br><br># 授权hive用户对Hive数据库的所有权限<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> PRIVILEGES <span class="hljs-keyword">ON</span> hive.<span class="hljs-operator">*</span> <span class="hljs-keyword">TO</span> <span class="hljs-string">'hive'</span>@<span class="hljs-string">'%'</span> <span class="hljs-keyword">WITH</span> <span class="hljs-keyword">GRANT</span> OPTION;<br><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> <span class="hljs-keyword">on</span> hive.<span class="hljs-operator">*</span> <span class="hljs-keyword">to</span> <span class="hljs-string">'hive'</span>@<span class="hljs-string">'%'</span> identified <span class="hljs-keyword">by</span> <span class="hljs-string">'hive用户密码'</span> <span class="hljs-keyword">with</span> <span class="hljs-keyword">grant</span> option;<br><br># 刷新权限<br>FLUSH PRIVILEGES;<br><br><br></code></pre></td></tr></table></figure><h3 id="7-退出数据库"><a href="#7-退出数据库" class="headerlink" title="7. 退出数据库"></a>7. 退出数据库</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs sql">exit<br></code></pre></td></tr></table></figure><h2 id="正式安装Hive"><a href="#正式安装Hive" class="headerlink" title="正式安装Hive"></a>正式安装Hive</h2><blockquote><p>在master主节点上执行</p></blockquote><h3 id="8-安装程序文件"><a href="#8-安装程序文件" class="headerlink" title="8. 安装程序文件"></a>8. 安装程序文件</h3><ul><li>首先上传Hive的文件到服务器上,或直接进行以下的下载行为</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 使用wget命令下载Hive文件(二选一)</span><br>wget -P /tmp/ -c <span class="hljs-string">'https://repo.huaweicloud.com/artifactory/apache-local/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz'</span><br><br><span class="hljs-comment"># 使用curl命令下载Hive文件(二选一)</span><br>curl -C - <span class="hljs-string">'https://repo.huaweicloud.com/artifactory/apache-local/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz'</span> -O /tmp/<br><br><span class="hljs-comment"># 解压文件到指定目录</span><br>tar -zxvf /tmp/apache-hive-3.1.2-bin.tar.gz -C /opt/module/<br><br><span class="hljs-comment">#重命名文件夹</span><br><span class="hljs-built_in">mv</span> /opt/module/apache-hive-3.1.2-bin/ /opt/module/hive<br><br></code></pre></td></tr></table></figure><h3 id="9-解决Hive与Hadoop之间的guava版本差异(依赖冲突)"><a href="#9-解决Hive与Hadoop之间的guava版本差异(依赖冲突)" class="headerlink" title="9. 解决Hive与Hadoop之间的guava版本差异(依赖冲突)"></a>9. 解决Hive与Hadoop之间的guava版本差异(依赖冲突)</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 备份hive中原guava的jar包</span><br><span class="hljs-built_in">mv</span> /opt/module/hive/lib/guava-19.0.jar /opt/module/hive/lib/guava-19.0.jar.bak<br><br><span class="hljs-comment"># 使用haddoop中guava-27版本的jar包覆盖hive中的jar包</span><br><span class="hljs-built_in">cp</span> <span class="hljs-variable">$HADOOP_HOME</span>/share/hadoop/common/lib/guava-27.0-jre.jar /opt/module/hive/lib/<br></code></pre></td></tr></table></figure><h3 id="10-配置用户环境变量"><a href="#10-配置用户环境变量" class="headerlink" title="10. 配置用户环境变量"></a>10. 配置用户环境变量</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cat</span> >> ~/.bashrc << <span class="hljs-string">"EOF"</span><br><br><span class="hljs-comment"># ------------------- Hive 配置--------------------</span><br><span class="hljs-comment"># 设置Hive环境变量,指向Hive安装目录</span><br><span class="hljs-built_in">export</span> HIVE_HOME=/opt/module/hive<br><br><span class="hljs-comment"># 将HIVE的bin目录添加到PATH环境变量</span><br><span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$PATH</span>:<span class="hljs-variable">$HIVE_HOME</span>/bin<br><span class="hljs-comment"># -------------------------------------------------</span><br>EOF<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash">-----------------------------------------------------------<br> 说明<br><br>举例 <span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$HIVE_HOME</span>/bin:<span class="hljs-variable">$PATH</span><br><br>英文冒号代表分隔<br><br>这段代码表示<br>1. 当你输入一个命令时,shell会首先在<span class="hljs-string">"HIVE_HOME"</span>这个变量的<span class="hljs-string">"bin"</span>子目录中查找,<br>2. 最后,若找不到,则在<span class="hljs-string">"PATH"</span>的指定目录中查找<br><br>-------------------------------------------------------------<br></code></pre></td></tr></table></figure><h3 id="11-编写Hive的配置文件"><a href="#11-编写Hive的配置文件" class="headerlink" title="11. 编写Hive的配置文件"></a>11. 编写Hive的配置文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 进入hive配置目录</span><br><span class="hljs-built_in">cd</span> /opt/module/hive/conf<br><br><span class="hljs-comment"># 复制hive-env.sh模板</span><br><span class="hljs-built_in">cp</span> hive-env.sh.template hive-env.sh<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">根据自己的配置信息,或者查看~/.bashrc,修改下面各项的内容,随后复制粘贴即可<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 配置hive.env.sh文件</span><br><span class="hljs-built_in">cat</span> >> hive-env.sh << <span class="hljs-string">EOF</span><br><span class="hljs-string">export HADOOP_HOME=/opt/module/hadoop-3.1.4</span><br><span class="hljs-string">export HIVE_CONF_DIR=/opt/module/hive/conf</span><br><span class="hljs-string">export HIVE_AUX_JARS_PATH=/opt/module/hive/lib</span><br><span class="hljs-string">EOF</span><br></code></pre></td></tr></table></figure><h3 id="12-编写Hive的配置文件2"><a href="#12-编写Hive的配置文件2" class="headerlink" title="12.编写Hive的配置文件2"></a>12.编写Hive的配置文件2</h3><blockquote><p>如果选择方案一部署,则数据库信息填写master主机的信息,hive服务器填写master主机</p><ul><li>如果选择方案二部署,则数据库信息填写slave1主机的信息填写,hive服务器填写master主机</li></ul></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cat</span> >> hive-site.xml << <span class="hljs-string">EOF</span><br><span class="hljs-string"><?xml version="1.0" encoding="UTF-8" standalone="no"?></span><br><span class="hljs-string"><?xml-stylesheet type="text/xsl" href="configuration.xsl"?></span><br><span class="hljs-string"><configuration></span><br><span class="hljs-string"> <!-- 配置存储元数据的数据库主机以及其他配置 --></span><br><span class="hljs-string"> <property></span><br><span class="hljs-string"> <name>javax.jdo.option.ConnectionURL</name></span><br><span class="hljs-string"> <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value></span><br><span class="hljs-string"> </property></span><br><span class="hljs-string"> <!-- 配置连接数据库使用的的驱动名 --></span><br><span class="hljs-string"> <property></span><br><span class="hljs-string"> <name>javax.jdo.option.ConnectionDriverName</name></span><br><span class="hljs-string"> <value>com.mysql.cj.jdbc.Driver</value></span><br><span class="hljs-string"> </property></span><br><span class="hljs-string"> <!-- 配置连接数据库的用户名,即刚刚设置的hive --></span><br><span class="hljs-string"> <property></span><br><span class="hljs-string"> <name>javax.jdo.option.ConnectionUserName</name></span><br><span class="hljs-string"> <value>hive</value></span><br><span class="hljs-string"> </property></span><br><span class="hljs-string"> <!-- 配置hive用户连接数据库的密码 --></span><br><span class="hljs-string"> <property></span><br><span class="hljs-string"> <name>javax.jdo.option.ConnectionPassword</name></span><br><span class="hljs-string"> <value>“你设置的hive用户密码”</value></span><br><span class="hljs-string"> </property></span><br><span class="hljs-string"></span><br><span class="hljs-string"> <!-- H2S(Hive服务器)运行绑定的主机 --></span><br><span class="hljs-string"> <property></span><br><span class="hljs-string"> <name>hive.server2.thrift.bind.host</name></span><br><span class="hljs-string"> <value>master</value></span><br><span class="hljs-string"> </property></span><br><span class="hljs-string"></span><br><span class="hljs-string"> <!-- 远程模式部署metastore(元数据)服务的地址(即数据库) --></span><br><span class="hljs-string"> <property></span><br><span class="hljs-string"> <name>hive.metastore.uris</name></span><br><span class="hljs-string"> <value>thrift://master:9083</value></span><br><span class="hljs-string"> </property></span><br><span class="hljs-string"></span><br><span class="hljs-string"> <!-- 关闭元数据权限的身份认证 --></span><br><span class="hljs-string"> <property></span><br><span class="hljs-string"> <name>hive.metastore.event.db.notification.api.auth</name></span><br><span class="hljs-string"> <value>false</value></span><br><span class="hljs-string"> </property></span><br><span class="hljs-string"></span><br><span class="hljs-string"> <!-- 关闭元数据存储版本的一致性验证 --></span><br><span class="hljs-string"> <property></span><br><span class="hljs-string"> <name>hive.metastore.schema.verification</name></span><br><span class="hljs-string"> <value>false</value></span><br><span class="hljs-string"> </property></span><br><span class="hljs-string"></configuration></span><br><span class="hljs-string">EOF</span><br></code></pre></td></tr></table></figure><h3 id="13-使用mysql-connector-java驱动"><a href="#13-使用mysql-connector-java驱动" class="headerlink" title="13. 使用mysql-connector-java驱动"></a>13. 使用mysql-connector-java驱动</h3><blockquote><p>网上找不到5.5、5.6、5.7版本的驱动,官网提供了解决方法:</p><ul><li><code>Connector/J 8.0 provides compatibility with all the functionality of MySQL 5.5, 5.6, 5.7, and 8.0</code>,翻译过来就是说——8.0版本的驱动兼容这些版本,使用8.0版本的驱动就可以了</li></ul></blockquote><ul><li><p><a href="https://repo1.maven.org/maven2/mysql/mysql-connector-java/">mysql-connector-java驱动目录1</a></p></li><li><p><a href="https://maven.icm.edu.pl/artifactory/repo/mysql/mysql-connector-java/">mysql-connector-java驱动目录2</a></p></li><li><p><a href="https://mirrors.aliyun.com/mysql/Connector-J/">mysql-Connector-J安装包下载_开源镜像站-阿里云</a></p></li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 根据你自己的mysql版本,在目录中查找对应版本的驱动,并放到hive主目录下的lib下即可</span><br><span class="hljs-built_in">cp</span> mysql-connector-java-8.0.26.jar /opt/module/hive/lib/<br></code></pre></td></tr></table></figure><h2 id="结束安装"><a href="#结束安装" class="headerlink" title="结束安装"></a>结束安装</h2><h3 id="14-加载环境变量"><a href="#14-加载环境变量" class="headerlink" title="14. 加载环境变量"></a>14. 加载环境变量</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 在master主节点上执行</span><br><span class="hljs-built_in">source</span> ~/.bashrc<br></code></pre></td></tr></table></figure><h3 id="15-启动Hive"><a href="#15-启动Hive" class="headerlink" title="15. 启动Hive"></a>15. 启动Hive</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 初始化Hive元数据到Mysql</span><br>schematool -initSchema -dbType mysql<br><br><span class="hljs-comment"># 创建日志目录</span><br><span class="hljs-built_in">mkdir</span> <span class="hljs-variable">$HIVE_HOME</span>/logs<br><br><span class="hljs-comment"># 启动Hive服务</span><br><span class="hljs-built_in">cd</span> <span class="hljs-variable">$HIVE_HOME</span>/logs && hive --service metastore<br></code></pre></td></tr></table></figure><h3 id="16-验证Hive部署是否成功"><a href="#16-验证Hive部署是否成功" class="headerlink" title="16. 验证Hive部署是否成功"></a>16. 验证Hive部署是否成功</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 进入Mysql数据库</span><br>myslq -uroot -p<span class="hljs-string">'新密码'</span><br><br><span class="hljs-comment"># 改变使用的数据库</span><br>use hive;<br><br><span class="hljs-comment"># 查看数据库中的表</span><br>show tables;<br><br><span class="hljs-comment"># 若里面有数据,则部署成功</span><br></code></pre></td></tr></table></figure><h3 id="17-后台启动Hive服务"><a href="#17-后台启动Hive服务" class="headerlink" title="17. 后台启动Hive服务"></a>17. 后台启动Hive服务</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">nohup</span> hive --service metastore > <span class="hljs-variable">$HIVE_HOME</span>/logs/nohup.out 2>&1 &<br></code></pre></td></tr></table></figure><h1 id="参考文档"><a href="#参考文档" class="headerlink" title="参考文档"></a>参考文档</h1><ol><li><p><a href="https://blog.csdn.net/weixin_74143660/article/details/132897593">Hive3.1.2版本完全分布式安装部署保姆级教程_hive 3.1.2 部署-CSDN博客</a></p></li><li><p><a href="https://www.cnblogs.com/bjynjj/p/18535805">Hive3.1.2搭建文档包含详细步骤及相关截图以及常见问题解决 - bjynjj - 博客园</a></p></li><li><p><a href="https://zhuanlan.zhihu.com/p/639883986">从零开始搭建分布式大数据环境(Hadoop+Spark+Hive)</a></p></li><li><p><a href="https://blog.csdn.net/Z_r_s/article/details/133951058">【超详细】CentOS 7安装MySQL 5.7【安装及密码配置、字符集配置、远程连接配置】_mysql contos 密码配置文件-CSDN博客</a></p></li><li><p><a href="https://cloud.tencent.com/developer/article/1702244">Linux安装软件包的三种方法,rpm包介绍,rpm工具用法,yum工具用法,yum搭建本地仓库-腾讯云开发者社区-腾讯云</a></p></li><li><p><a href="https://mirror.tuna.tsinghua.edu.cn/help/mysql/">mysql | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror</a></p></li><li><p><a href="https://mirrors.ustc.edu.cn/help/mysql-repo.html">MySQL - USTC Mirror Help</a></p></li><li><p><a href="https://blog.csdn.net/Z_r_s/article/details/133951058">【超详细】CentOS 7安装MySQL 5.7【安装及密码配置、字符集配置、远程连接配置】_mysql contos 密码配置文件-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/weixin_71602103/article/details/140215449">通过国内mysql镜像站安装Mysql8.0版本服务器——解决方案_mysql国内镜像-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/weixin_43102174/article/details/121292951">Maven中找不到mysql-connector-java-5.7.24.jar的依赖_mysql5.7.24对应的jar包版本-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/qq_41943867/article/details/90574135">JDBC连接数据库出现Loading class <code>com.mysql.jdbc.Driver'. This is deprecated.问题的相关解决方法_this is deprecated. the new driver class is </code>com.m-CSDN博客</a></p></li></ol>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>大数据</tag>
<tag>Hive</tag>
</tags>
</entry>
<entry>
<title>搭建分布式Spark集群</title>
<link href="/2024/11/29/%E6%90%AD%E5%BB%BA%E5%88%86%E5%B8%83%E5%BC%8FSpark%E9%9B%86%E7%BE%A4/"/>
<url>/2024/11/29/%E6%90%AD%E5%BB%BA%E5%88%86%E5%B8%83%E5%BC%8FSpark%E9%9B%86%E7%BE%A4/</url>
<content type="html"><![CDATA[<h1 id="搭建分布式Spark集群"><a href="#搭建分布式Spark集群" class="headerlink" title="搭建分布式Spark集群"></a>搭建分布式Spark集群</h1><ul><li>本次实验环境:Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeeper-3.6.3、scala-2.11.5、Spark-3.2.1</li></ul><h2 id="功能规划"><a href="#功能规划" class="headerlink" title="功能规划"></a>功能规划</h2><table><thead><tr><th align="center">Master</th><th align="center">Slave1</th><th align="center">Slave2</th></tr></thead><tbody><tr><td align="center">主节点(master)</td><td align="center">工作节点(worker)</td><td align="center">工作节点(worker)</td></tr><tr><td align="center">192.168.66.6</td><td align="center">192.168.66.7</td><td align="center">192.168.66.21</td></tr></tbody></table><h2 id="前提"><a href="#前提" class="headerlink" title="前提"></a>前提</h2><blockquote><p>因<code>Spark</code>是基于<code>Scala</code>语言开发的,而<code>Scala</code>语言是基于<code>JAVA</code>语言开发的;故<mark>需要先配置好两种语言的环境</mark></p><p>因<code>Spark</code>工作中需要<code>Hadoop</code>集群;故需要先搭建好<code>Hadoop</code>集群,<mark>并启动</mark></p></blockquote><h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><h3 id="1-解压Scala"><a href="#1-解压Scala" class="headerlink" title="1. 解压Scala"></a>1. 解压Scala</h3><ul><li>首先上传Scala的文件到服务器上</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 解压文件到指定目录</span><br>tar -zxvf scala-2.11.5.tgz -C /opt/module/<br><br><span class="hljs-comment"># 重命名文件夹</span><br><span class="hljs-built_in">mv</span> /opt/module/scala-2.11.5/ /opt/module/scala<br></code></pre></td></tr></table></figure><h3 id="2-配置用户环境变量"><a href="#2-配置用户环境变量" class="headerlink" title="2. 配置用户环境变量"></a>2. 配置用户环境变量</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cat</span> >> ~/.bashrc << <span class="hljs-string">"EOF"</span><br><br><span class="hljs-comment"># ------------------- Scala 配置--------------------</span><br><span class="hljs-comment"># 设置Scala环境变量,指向Scala安装目录</span><br><span class="hljs-built_in">export</span> SCALA_HOME=/opt/module/scala<br><br><span class="hljs-comment"># 将Scala的bin目录添加到PATH环境变量</span><br><span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$PATH</span>:<span class="hljs-variable">$SCALA_HOME</span>/bin<br><span class="hljs-comment"># -------------------------------------------------</span><br>EOF<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash">-----------------------------------------------------------<br> 说明<br><br>举例 <span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$SCALA_HOME</span>/bin:<span class="hljs-variable">$PATH</span><br><br>英文冒号代表分隔<br><br>这段代码表示<br>1. 当你输入一个命令时,shell会首先在<span class="hljs-string">"SCALA_HOME"</span>这个变量的<span class="hljs-string">"bin"</span>子目录中查找,<br>2. 最后,若找不到,则在<span class="hljs-string">"PATH"</span>的指定目录中查找<br><br>-------------------------------------------------------------<br></code></pre></td></tr></table></figure><h2 id="开始安装"><a href="#开始安装" class="headerlink" title="开始安装"></a>开始安装</h2><h3 id="3-解压Spark"><a href="#3-解压Spark" class="headerlink" title="3. 解压Spark"></a>3. 解压Spark</h3><ul><li>首先上传Spark的文件到服务器上,或直接进行以下的下载行为</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 使用wget命令下载Spark文件(二选一)</span><br>wget -P /tmp/ -c <span class="hljs-string">'https://repo.huaweicloud.com/artifactory/apache-local/spark/spark-3.2.1/spark-3.2.1-bin-hadoop2.7.tgz'</span><br><br><span class="hljs-comment"># 使用curl命令下载Spark文件(二选一)</span><br>curl -C - <span class="hljs-string">'https://repo.huaweicloud.com/artifactory/apache-local/spark/spark-3.2.1/spark-3.2.1-bin-hadoop2.7.tgz'</span> -O /tmp/<br><br><span class="hljs-comment"># 解压文件到指定目录</span><br>tar -zxvf /tmp/spark-3.2.1-bin-hadoop2.7.tgz -C /opt/module/<br><br><span class="hljs-comment"># 重命名文件夹</span><br><span class="hljs-built_in">mv</span> /opt/module/spark-3.2.1-bin-hadoop2.7 /opt/module/spark<br></code></pre></td></tr></table></figure><h3 id="4-配置用户环境变量"><a href="#4-配置用户环境变量" class="headerlink" title="4. 配置用户环境变量"></a>4. 配置用户环境变量</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cat</span> >> ~/.bashrc << <span class="hljs-string">"EOF"</span><br><span class="hljs-comment"># ------------------- Spark 配置--------------------</span><br><span class="hljs-comment"># 设置Spark环境变量,指向Spark安装目录</span><br><span class="hljs-built_in">export</span> SPARK_HOME=/opt/module/spark<br><br><span class="hljs-comment"># 将Spark的bin目录添加到PATH环境变量</span><br><span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$PATH</span>:<span class="hljs-variable">$SPARK_HOME</span>/bin<br><span class="hljs-comment"># -------------------------------------------------</span><br>EOF<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash">-----------------------------------------------------------<br> 说明<br><br>举例 <span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$SPARK_HOME</span>/bin:<span class="hljs-variable">$PATH</span><br><br>英文冒号代表分隔<br><br>这段代码表示<br>1. 当你输入一个命令时,shell会首先在<span class="hljs-string">"SPARK_HOME"</span>这个变量的<span class="hljs-string">"bin"</span>子目录中查找,<br>2. 最后,若找不到,则在<span class="hljs-string">"PATH"</span>的指定目录中查找<br><br>-------------------------------------------------------------<br></code></pre></td></tr></table></figure><h3 id="5-编写spark主节点的配置文件"><a href="#5-编写spark主节点的配置文件" class="headerlink" title="5. 编写spark主节点的配置文件"></a>5. 编写spark主节点的配置文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 进入spark配置目录</span><br><span class="hljs-built_in">cd</span> /opt/module/spark/conf<br><br><span class="hljs-comment"># 复制spark-env.sh模板</span><br><span class="hljs-built_in">cp</span> spark-env.sh.template spark-env.sh<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">根据自己节点的信息,或者查看~/.bashrc,修改下面各项的内容,随后复制粘贴即可<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cat</span> >> spark-env.sh << <span class="hljs-string">"EOF"</span><br><span class="hljs-comment"># 配置Spark主节点的IP或主机名</span><br><span class="hljs-built_in">export</span> SPARK_MASTER_IP=master<br><span class="hljs-comment"># 配置Scala的家目录</span><br><span class="hljs-built_in">export</span> SCALA_HOME=/opt/module/scala<br><span class="hljs-comment"># 配置Spark工作节点的内存大小</span><br><span class="hljs-built_in">export</span> SPARK_WORKER_MEMORY=4g<br><span class="hljs-comment"># 配置JAVA的家目录</span><br><span class="hljs-built_in">export</span> JAVA_HOME=/opt/module/jdk1.8.0_202<br><span class="hljs-comment"># 配置Hadoop的家目录</span><br><span class="hljs-built_in">export</span> HADOOP_HOME=/opt/module/hadoop-3.1.4<br><span class="hljs-comment"># 配置Hadoop的配置目录</span><br><span class="hljs-built_in">export</span> HADOOP_CONF_DIR=/opt/module/hadoop-3.1.4/etc/hadoop<br>EOF<br></code></pre></td></tr></table></figure><h3 id="6-编写spark工作节点的配置文件"><a href="#6-编写spark工作节点的配置文件" class="headerlink" title="6. 编写spark工作节点的配置文件"></a>6. 编写spark工作节点的配置文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 复制workers模板</span><br><span class="hljs-built_in">cp</span> workers.template workers<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">根据自己工作节点的信息,修改下面的内容,随后复制粘贴即可<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 清空工作节点原本的信息——即删除这个文件的最后一行</span><br>sed -i <span class="hljs-string">'$d'</span> workers<br><br><span class="hljs-comment"># 配置工作节点</span><br><span class="hljs-built_in">cat</span> >> workers << <span class="hljs-string">EOF</span><br><span class="hljs-string">slave1</span><br><span class="hljs-string">slave2</span><br><span class="hljs-string">EOF</span><br></code></pre></td></tr></table></figure><h3 id="7-同步文件"><a href="#7-同步文件" class="headerlink" title="7. 同步文件"></a>7. 同步文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 同步到slave1机器</span><br>scp -r /opt/module/scala/ slave1:/opt/module/<br>scp -r /opt/module/spark/ slave1:/opt/module/<br>scp ~/.bashrc root@slave1:/root<br><br><span class="hljs-comment"># 同步到slave2机器</span><br>scp -r /opt/module/scala/ slave2:/opt/module/<br>scp -r /opt/module/spark/ slave2:/opt/module/<br>scp ~/.bashrc root@slave2:/root<br></code></pre></td></tr></table></figure><h3 id="8-环境变量生效"><a href="#8-环境变量生效" class="headerlink" title="8. 环境变量生效"></a>8. 环境变量生效</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># master节点环境变量生效</span><br><span class="hljs-built_in">source</span> ~/.bashrc<br><br><span class="hljs-comment"># slave1节点环境变量生效</span><br>ssh slave1 <span class="hljs-string">'source ~/.bashrc'</span><br><br><span class="hljs-comment"># slave2节点环境变量生效</span><br>ssh slave2 <span class="hljs-string">'source ~/.bashrc'</span><br></code></pre></td></tr></table></figure><h2 id="安装结束"><a href="#安装结束" class="headerlink" title="安装结束"></a>安装结束</h2><h3 id="9-启动Spark集群"><a href="#9-启动Spark集群" class="headerlink" title="9. 启动Spark集群"></a>9. 启动Spark集群</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-variable">$SPARK_HOME</span>/sbin/start-all.sh<br></code></pre></td></tr></table></figure><h3 id="10-查看Spark进程"><a href="#10-查看Spark进程" class="headerlink" title="10. 查看Spark进程"></a>10. 查看Spark进程</h3><ul><li><p>master会有<code>Master</code>的进程</p></li><li><p>slave1会有<code>Worker</code>的进程</p></li><li><p>slave2会有<code>Worker</code>的进程</p></li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 命令</span><br>jps<br></code></pre></td></tr></table></figure><h3 id="11-浏览器访问"><a href="#11-浏览器访问" class="headerlink" title="11. 浏览器访问"></a>11. 浏览器访问</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs textile">访问Spark,地址:http://192.168.66.6:端口<br><br>#端口详情<br>4040:这是Spark UI的默认端口,用于监控和查看Spark应用的状态。<br>7077:这是StandAlone模式下Spark Master服务的默认端口。<br>8080:这是Spark Master的Web UI端口,用于查看集群状态。<br>8081:这是Spark Worker的Web UI端口,用于查看单个工作节点的状态。<br><br>这个地址是master的IP地址<br></code></pre></td></tr></table></figure><h3 id="12-停止Spark集群"><a href="#12-停止Spark集群" class="headerlink" title="12. 停止Spark集群"></a>12. 停止Spark集群</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-variable">$SPARK_HOME</span>/sbin/stop-all.sh<br></code></pre></td></tr></table></figure><h1 id="参考文档"><a href="#参考文档" class="headerlink" title="参考文档"></a>参考文档</h1><ol><li><p><a href="https://blog.csdn.net/ZFX008/article/details/108219091">大数据分布式集群搭建详细步骤(Spark的安装与配置)_spark分布式集群部署及ha配置-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/tttzzzqqq2018/article/details/132052374">【Spark】Windows下安装Spark(亲测成功安装)_windows安装spark-CSDN博客</a></p></li><li><p><a href="https://developer.baidu.com/article/details/2826018">Apache Spark 3.2.1安装教程-百度开发者中心</a></p></li></ol>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>大数据</tag>
<tag>Spark</tag>
</tags>
</entry>
<entry>
<title>搭建分布式HBase集群</title>
<link href="/2024/11/28/%E6%90%AD%E5%BB%BA%E5%88%86%E5%B8%83%E5%BC%8FHBase%E9%9B%86%E7%BE%A4/"/>
<url>/2024/11/28/%E6%90%AD%E5%BB%BA%E5%88%86%E5%B8%83%E5%BC%8FHBase%E9%9B%86%E7%BE%A4/</url>
<content type="html"><![CDATA[<h1 id="搭建分布式HBase集群"><a href="#搭建分布式HBase集群" class="headerlink" title="搭建分布式HBase集群"></a>搭建分布式HBase集群</h1><ul><li>本次实验环境:Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeeper-3.6.3、Hbase-2.4.11</li></ul><h2 id="功能规划"><a href="#功能规划" class="headerlink" title="功能规划"></a>功能规划</h2><table><thead><tr><th align="center">Master</th><th align="center">Slave1</th><th align="center">Slave2</th></tr></thead><tbody><tr><td align="center">主节点</td><td align="center">从节点</td><td align="center">从节点</td></tr><tr><td align="center">HRegionServer</td><td align="center">HRegionServer</td><td align="center">HRegionServer</td></tr><tr><td align="center">192.168.66.6</td><td align="center">192.168.66.7</td><td align="center">192.168.66.21</td></tr></tbody></table><h2 id="前提"><a href="#前提" class="headerlink" title="前提"></a>前提</h2><ul><li>搭建好<code>Hadoop</code>集群以及<code>ZooKeeper</code>集群,<mark>并启动</mark></li></ul><h2 id="开始安装"><a href="#开始安装" class="headerlink" title="开始安装"></a>开始安装</h2><h3 id="1-安装程序文件"><a href="#1-安装程序文件" class="headerlink" title="1. 安装程序文件"></a>1. 安装程序文件</h3><ul><li>首先上传HBase的文件到服务器上,或直接进行以下的下载行为</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 使用wget命令下载Hbase文件(二选一)</span><br>wget -P /tmp/ -c <span class="hljs-string">'https://repo.huaweicloud.com/artifactory/apache-local/hbase/2.4.11/hbase-2.4.11-bin.tar.gz'</span><br><br><span class="hljs-comment"># 使用curl命令下载Hbase文件(二选一)</span><br>curl -C - <span class="hljs-string">'https://repo.huaweicloud.com/artifactory/apache-local/hbase/2.4.11/hbase-2.4.11-bin.tar.gz'</span> -O /tmp/<br><br><span class="hljs-comment"># 解压文件到指定目录</span><br> tar -zxvf /tmp/hbase-2.4.11-bin.tar.gz -C /opt/module/<br><br><span class="hljs-comment"># 重命名文件夹</span><br> <span class="hljs-built_in">mv</span> /opt/module/hbase-2.4.11/ /opt/module/hbase<br></code></pre></td></tr></table></figure><h3 id="2-配置用户环境变量"><a href="#2-配置用户环境变量" class="headerlink" title="2. 配置用户环境变量"></a>2. 配置用户环境变量</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cat</span> >> ~/.bashrc << <span class="hljs-string">"EOF"</span><br><br><span class="hljs-comment"># ------------------- Hbase 配置--------------------</span><br><span class="hljs-comment"># 设置HBASE环境变量,指向HBASE安装目录</span><br><span class="hljs-built_in">export</span> HBASE=/opt/module/hbase<br><br><span class="hljs-comment"># 将HBASE的bin目录添加到PATH环境变量</span><br><span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$PATH</span>:<span class="hljs-variable">$HBASE</span>/bin<br><span class="hljs-comment"># -------------------------------------------------</span><br>EOF<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash">-----------------------------------------------------------<br> 说明<br><br>举例 <span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$HBASE</span>/bin:<span class="hljs-variable">$PATH</span><br><br>英文冒号代表分隔<br><br>这段代码表示<br>1. 当你输入一个命令时,shell会首先在<span class="hljs-string">"HBASE"</span>这个变量的<span class="hljs-string">"bin"</span>子目录中查找,<br>2. 最后,若找不到,则在<span class="hljs-string">"PATH"</span>的指定目录中查找<br><br>-------------------------------------------------------------<br></code></pre></td></tr></table></figure><h3 id="3-修改hbase配置文件"><a href="#3-修改hbase配置文件" class="headerlink" title="3. 修改hbase配置文件"></a>3. 修改hbase配置文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 进入Hbase的配置文件目录</span><br><span class="hljs-built_in">cd</span> /opt/module/hbase/conf<br></code></pre></td></tr></table></figure><h4 id="3-1-配置hbase使用外部Zookeeper(二选一)"><a href="#3-1-配置hbase使用外部Zookeeper(二选一)" class="headerlink" title="3.1 配置hbase使用外部Zookeeper(二选一)"></a>3.1 配置hbase使用外部Zookeeper(二选一)</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 将hase-env.sh文件中HBASE_MANAGES_ZK=true修改为HBASE_MANAGES_ZK=false</span><br>sed -i <span class="hljs-string">'s|# export HBASE_MANAGES_ZK=true|export HBASE_MANAGES_ZK=false|'</span> hbase-env.sh<br></code></pre></td></tr></table></figure><h4 id="3-2-配置hbase使用内部zookeeper(二选一)"><a href="#3-2-配置hbase使用内部zookeeper(二选一)" class="headerlink" title="3.2 配置hbase使用内部zookeeper(二选一)"></a>3.2 配置hbase使用内部zookeeper(二选一)</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 将hase-env.sh文件中HBASE_MANAGES_ZK=true修改为HBASE_MANAGES_ZK=false</span><br>sed -i <span class="hljs-string">'s|# export HBASE_MANAGES_ZK=true|export HBASE_MANAGES_ZK=true|'</span> hbase-env.sh<br></code></pre></td></tr></table></figure><h4 id="3-3-修改hbase-site-xml文件"><a href="#3-3-修改hbase-site-xml文件" class="headerlink" title="3.3 修改hbase-site.xml文件"></a>3.3 修改hbase-site.xml文件</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 注释原本的标签内容</span><br>sed -i <span class="hljs-string">'41a <!--'</span> hbase-site.xml<br>sed -i <span class="hljs-string">'54a -->'</span> hbase-site.xml<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">根据自己节点的信息,修改下面内容的主机名,随后复制粘贴即可<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 一键新增hbase配置</span><br>sed -i <span class="hljs-string">'55a \</span><br><span class="hljs-string"><!-- 指定hbase在hdfs上数据位置 --> \</span><br><span class="hljs-string"> <property> \</span><br><span class="hljs-string"> <name>hbase.rootdir</name> \</span><br><span class="hljs-string"> <value>hdfs://master:8020/hbase</value> \</span><br><span class="hljs-string"> </property> \</span><br><span class="hljs-string"><!-- 指定集群的运行模式,ture代表分布式,flase代表单机模式 --> \</span><br><span class="hljs-string"> <property> \</span><br><span class="hljs-string"> <name>hbase.cluster.distributed</name> \</span><br><span class="hljs-string"> <value>true</value> \</span><br><span class="hljs-string"> </property> \</span><br><span class="hljs-string"><!-- 指定zookeeper的主机 --> \</span><br><span class="hljs-string"> <property> \</span><br><span class="hljs-string"> <name>hbase.zookeeper.quorum</name> \</span><br><span class="hljs-string"> <value>master,slave1,slave2</value> \</span><br><span class="hljs-string"> </property> \</span><br><span class="hljs-string"><!-- 指定Hbase是否检查流功能 --> \</span><br><span class="hljs-string"> <property> \</span><br><span class="hljs-string"> <name>hbase.unsafe.stream.capability.enforce</name> \</span><br><span class="hljs-string"> <value>true</value> \</span><br><span class="hljs-string"> </property>'</span> hbase-site.xml<br></code></pre></td></tr></table></figure><h4 id="3-4-修改regionservers文件"><a href="#3-4-修改regionservers文件" class="headerlink" title="3.4 修改regionservers文件"></a>3.4 修改regionservers文件</h4><ul><li>这个文件是配置类似于<code>hadoop</code>中的<code>workers</code></li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 清空原本配置</span><br><span class="hljs-built_in">echo</span> <span class="hljs-string">""</span> > regionservers<br><br><span class="hljs-comment"># 根据自己的节点信息修改主机名,随后复制粘贴</span><br><span class="hljs-built_in">cat</span> > regionservers << <span class="hljs-string">EOF</span><br><span class="hljs-string">master</span><br><span class="hljs-string">slave1</span><br><span class="hljs-string">slave2</span><br><span class="hljs-string">EOF</span><br></code></pre></td></tr></table></figure><h3 id="4-分发文件"><a href="#4-分发文件" class="headerlink" title="4. 分发文件"></a>4. 分发文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 同步到slave1机器</span><br>scp -r /opt/module/hbase/ slave1:/opt/module/<br>scp ~/.bashrc root@slave1:/root<br><br><span class="hljs-comment"># 同步到slave2机器</span><br>scp -r /opt/module/hbase/ slave2:/opt/module/<br>scp ~/.bashrc root@slave2:/root<br></code></pre></td></tr></table></figure><h3 id="5-环境变量生效"><a href="#5-环境变量生效" class="headerlink" title="5. 环境变量生效"></a>5. 环境变量生效</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># master节点环境变量生效</span><br><span class="hljs-built_in">source</span> ~/.bashrc<br><br><span class="hljs-comment"># slave1节点环境变量生效</span><br>ssh slave1 <span class="hljs-string">'source ~/.bashrc'</span><br><br><span class="hljs-comment"># slave2节点环境变量生效</span><br>ssh slave2 <span class="hljs-string">'source ~/.bashrc'</span><br></code></pre></td></tr></table></figure><h2 id="安装结束"><a href="#安装结束" class="headerlink" title="安装结束"></a>安装结束</h2><h3 id="6-启动Hbase"><a href="#6-启动Hbase" class="headerlink" title="6. 启动Hbase"></a>6. 启动Hbase</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-variable">$HBASE</span>/bin/start-hbase.sh<br></code></pre></td></tr></table></figure><h3 id="7-查看Hbase进程"><a href="#7-查看Hbase进程" class="headerlink" title="7. 查看Hbase进程"></a>7. 查看Hbase进程</h3><ul><li><p>master会有<code>HMaster</code>、<code>HRegionServer</code>的进程</p></li><li><p>slave1会有<code>HRegionServer</code>的进程</p></li><li><p>slave2会有<code>HRegionServer</code>的进程</p></li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 命令</span><br>jps<br></code></pre></td></tr></table></figure><h3 id="停止Hbase"><a href="#停止Hbase" class="headerlink" title="停止Hbase"></a>停止Hbase</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-variable">$HBASE</span>/bin/stop-hbase.sh<br></code></pre></td></tr></table></figure><h1 id="参考文档"><a href="#参考文档" class="headerlink" title="参考文档"></a>参考文档</h1><ol><li><p><a href="https://blog.csdn.net/Andy86666/article/details/127742130">Hbase2.4.11安装_hbase-2.4.11-bin.tar.gz-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/m0_73426012/article/details/133046308">HBase2.4.1全分布式安装(一主二从)保姆级教程-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/m0_70885101/article/details/127291209">Hadoop之Hbase安装和配置_hadoop之hbase的安装与配置-CSDN博客</a></p></li></ol>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>大数据</tag>
<tag>HBase</tag>
</tags>
</entry>
<entry>
<title>搭建分布式ZooKeeper集群</title>
<link href="/2024/11/26/%E6%90%AD%E5%BB%BA%E5%88%86%E5%B8%83%E5%BC%8FZooKeeper%E9%9B%86%E7%BE%A4/"/>
<url>/2024/11/26/%E6%90%AD%E5%BB%BA%E5%88%86%E5%B8%83%E5%BC%8FZooKeeper%E9%9B%86%E7%BE%A4/</url>
<content type="html"><![CDATA[<h1 id="搭建分布式ZooKeeper集群"><a href="#搭建分布式ZooKeeper集群" class="headerlink" title="搭建分布式ZooKeeper集群"></a>搭建分布式ZooKeeper集群</h1><ul><li>本次实验环境:Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeeper-3.6.3</li></ul><h2 id="前提"><a href="#前提" class="headerlink" title="前提"></a>前提</h2><blockquote><p>首先配置好<code>Hadoop</code>集群</p><ul><li>为了配置方便,<code>Hadoop</code>集群的所有软件及文件位于<code>/opt/module</code>目录下</li></ul></blockquote><h2 id="1-修改主机名-域名-与IP地址的对应关系"><a href="#1-修改主机名-域名-与IP地址的对应关系" class="headerlink" title="1. 修改主机名(域名)与IP地址的对应关系"></a>1. 修改主机名(域名)与IP地址的对应关系</h2><blockquote><p>规划功能</p></blockquote><table><thead><tr><th>Master</th><th>Slave1</th><th>Slave2</th></tr></thead><tbody><tr><td>主节点</td><td>从节点</td><td>从节点</td></tr><tr><td>192.168.66.6</td><td>192.168.66.7</td><td>192.168.66.21</td></tr></tbody></table><ul><li>如若在这之前,<code>Hadoop</code>已配置过此项,则只需记住已配置的数据,无须更改</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cat</span> >> /etc/hosts << <span class="hljs-string">EOF</span><br><span class="hljs-string"># ------ZooKeeper主机名解析 配置--------</span><br><span class="hljs-string">192.168.66.6 master </span><br><span class="hljs-string">192.168.66.7 slave1 </span><br><span class="hljs-string">192.168.66.21 slave2 </span><br><span class="hljs-string">EOF</span><br></code></pre></td></tr></table></figure><h2 id="2-安装程序文件"><a href="#2-安装程序文件" class="headerlink" title="2. 安装程序文件"></a>2. 安装程序文件</h2><ul><li>首先上传zookeeper的文件到服务器上,或直接进行以下的下载行为</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 使用wget命令下载zookeeper文件(二选一)</span><br>wget -P /tmp/ -c <span class="hljs-string">'https://repo.huaweicloud.com/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3.tar.gz'</span><br><br><span class="hljs-comment"># 使用curl命令下载zookeeper文件(二选一)</span><br>curl -C - <span class="hljs-string">'https://repo.huaweicloud.com/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3.tar.gz'</span> -O /tmp/<br><br><span class="hljs-comment"># 解压文件到指定目录</span><br>tar -zxvf /tmp/apache-zookeeper-3.6.3-bin.tar.gz -C /opt/module/<br><br><span class="hljs-comment"># 重名名文件夹</span><br><span class="hljs-built_in">mv</span> /opt/module/apache-zookeeper-3.6.3-bin/ /opt/module/zookeeper/<br></code></pre></td></tr></table></figure><h2 id="3-配置用户环境变量"><a href="#3-配置用户环境变量" class="headerlink" title="3. 配置用户环境变量"></a>3. 配置用户环境变量</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cat</span> >> ~/.bashrc << <span class="hljs-string">"EOF"</span><br><br><span class="hljs-comment"># ------------------- Zookeeper 配置--------------------</span><br><span class="hljs-comment"># 设置ZK_HOME环境变量,指向zookeeper安装目录</span><br><span class="hljs-built_in">export</span> ZK_HOME=/opt/module/zookeeper<br><br><span class="hljs-comment"># 将ZK_HOME的bin目录以及conf目录添加到PATH环境变量</span><br><span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$PATH</span>:<span class="hljs-variable">$ZK_HOME</span>/bin:<span class="hljs-variable">$ZK_HOME</span>/conf<br><br><span class="hljs-comment"># 将ZK_HOME的lib目录添加到CLASSPATH环境变量</span><br><span class="hljs-built_in">export</span> CLASSPATH=<span class="hljs-variable">$CLASSPATH</span>:<span class="hljs-variable">$ZK_HOME</span>/lib<br><span class="hljs-comment"># -------------------------------------------------</span><br>EOF<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs bash">-----------------------------------------------------------<br> 说明<br><br>举例 <span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$ZK_HOME</span>/bin:<span class="hljs-variable">$ZK_HOME</span>/conf:<span class="hljs-variable">$PATH</span><br><br>英文冒号代表分隔<br><br>这段代码表示<br>1. 当你输入一个命令时,shell会首先在<span class="hljs-string">"ZK_HOME"</span>这个变量的<span class="hljs-string">"bin"</span>子目录中查找,<br>3. 其次,若找不到,则在<span class="hljs-string">"ZK_HOME"</span>这个变量的<span class="hljs-string">"conf"</span>子目录中查找,<br>4. 最后,若找不到,则在<span class="hljs-string">"PATH"</span>的指定目录中查找<br><br>-------------------------------------------------------------<br></code></pre></td></tr></table></figure><h2 id="4-编写Zookeeper配置文件"><a href="#4-编写Zookeeper配置文件" class="headerlink" title="4. 编写Zookeeper配置文件"></a>4. 编写Zookeeper配置文件</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 文件重命名</span><br><span class="hljs-built_in">mv</span> /opt/module/zookeeper/conf/zoo_sample.cfg /opt/module/zookeeper/conf/zoo.cfg<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 创建zookeeper的数据目录</span><br><span class="hljs-built_in">mkdir</span> /opt/module/zookeeper/data<br><br><span class="hljs-comment"># 创建zookeeper的节点信息</span><br><span class="hljs-built_in">echo</span> <span class="hljs-string">"1"</span> > /opt/module/zookeeper/data/myid<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 更改Zookeeper的数据位置,并添加zookeeper的节点信息</span><br><span class="hljs-comment"># 这里的节点信息,根据一开始你自己的规划填写,也可以填写主机名</span><br><br>sed -i -e <span class="hljs-string">'s|dataDir=/tmp/zookeeper|dataDir=/opt/module/zookeeper/data|'</span> \<br>-e <span class="hljs-string">'/dataDir=/a \</span><br><span class="hljs-string">server.1=192.168.66.6:2888:3888\</span><br><span class="hljs-string">server.2=192.168.66.7:2888:3888\</span><br><span class="hljs-string">server.3=192.168.66.21:2888:3888'</span> /opt/module/zookeeper/conf/zoo.cfg<br></code></pre></td></tr></table></figure><h2 id="5-同步所需文件"><a href="#5-同步所需文件" class="headerlink" title="5. 同步所需文件"></a>5. 同步所需文件</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 同步到slave1机器</span><br>scp -r /opt/module/zookeeper/ root@slave1:/opt/module/<br>scp ~/.bashrc root@slave1:/root<br><br><span class="hljs-comment"># 同步到slave2机器</span><br>scp -r /opt/module/zookeeper/ root@slave2:/opt/module/<br>scp ~/.bashrc root@slave2:/root<br></code></pre></td></tr></table></figure><h2 id="6-修改从节点Zookeeper配置文件"><a href="#6-修改从节点Zookeeper配置文件" class="headerlink" title="6. 修改从节点Zookeeper配置文件"></a>6. 修改从节点Zookeeper配置文件</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 修改slave1的配置文件</span><br>ssh slave1 <span class="hljs-string">'echo "2" > /opt/module/zookeeper/data/myid'</span><br><br><span class="hljs-comment"># 修改slave2的配置文件</span><br>ssh slave2 <span class="hljs-string">'echo "3" > /opt/module/zookeeper/data/myid'</span><br></code></pre></td></tr></table></figure><h2 id="7-环境变量生效"><a href="#7-环境变量生效" class="headerlink" title="7. 环境变量生效"></a>7. 环境变量生效</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># master节点环境变量生效</span><br><span class="hljs-built_in">source</span> ~/.bashrc<br><br><span class="hljs-comment"># slave1节点环境变量生效</span><br>ssh slave2 <span class="hljs-string">'source ~/.bashrc'</span><br><br><span class="hljs-comment"># slave2节点环境变量生效</span><br>ssh slave2 <span class="hljs-string">'source ~/.bashrc'</span><br></code></pre></td></tr></table></figure><h2 id="8-后台启动Zookeeper"><a href="#8-后台启动Zookeeper" class="headerlink" title="8. 后台启动Zookeeper"></a>8. 后台启动Zookeeper</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># master节点启动zookeeper</span><br><span class="hljs-variable">$ZK_HOME</span>/bin/zkServer.sh start<br><br><span class="hljs-comment"># slave1节点启动zookeeper</span><br>ssh slave1 <span class="hljs-string">' $ZK_HOME/bin/zkServer.sh start'</span><br><br><span class="hljs-comment"># slave2节点启动zookeeper</span><br>ssh slave2 <span class="hljs-string">' $ZK_HOME/bin/zkServer.sh start'</span><br></code></pre></td></tr></table></figure><h2 id="9-查看Zookeeper状态"><a href="#9-查看Zookeeper状态" class="headerlink" title="9. 查看Zookeeper状态"></a>9. 查看Zookeeper状态</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 查看master节点的zookeeper状态</span><br><span class="hljs-variable">$ZK_HOME</span>/bin/zkServer.sh status<br><br><span class="hljs-comment"># 查看slave1节点的zookeeper状态</span><br>ssh slave1 <span class="hljs-string">' $ZK_HOME/bin/zkServer.sh status '</span><br><br><span class="hljs-comment"># 查看slave2节点的zookeeper状态</span><br>ssh slave2 <span class="hljs-string">' $ZK_HOME/bin/zkServer.sh status '</span><br></code></pre></td></tr></table></figure><hr><h1 id="备注"><a href="#备注" class="headerlink" title="备注"></a>备注</h1><h2 id="若出现It-is-probably-not-running"><a href="#若出现It-is-probably-not-running" class="headerlink" title="若出现It is probably not running"></a>若出现It is probably not running</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 报错信息</span><br>ZooKeeper JMX enabled by default<br>Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg<br>Client port found: 2181. Client address: localhost. Client SSL: <span class="hljs-literal">false</span>.<br>Error contacting service. It is probably not running.<br></code></pre></td></tr></table></figure><blockquote><p>请关闭防火墙</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 关闭防火墙</span><br>systemctl stop firewalld<br><br><span class="hljs-comment"># 禁止防火墙开机自启</span><br>systemctl disabled firewalld<br></code></pre></td></tr></table></figure><blockquote><p>若不想关闭防火墙,则需要放行防火墙的<code>2888</code>以及<code>3888</code>端口</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 放行防火墙2888端口</span><br>firewall-cmd --add-port=2888/tcp --permanent --zone=public <br><br><span class="hljs-comment"># 放行防火墙3888端口</span><br>firewall-cmd --add-port=3888/tcp --permanent --zone=public <br><br><span class="hljs-comment"># 重载防火墙配置</span><br>firewall-cmd --reload <br></code></pre></td></tr></table></figure><h2 id="Zookeeper前台运行"><a href="#Zookeeper前台运行" class="headerlink" title="Zookeeper前台运行"></a>Zookeeper前台运行</h2><blockquote><p>该命令用于启动 ZooKeeper 服务,并且在前台运行。<br>ZooKeeper 的所有日志和输出都会直接显示在控制台上,而不是写入日志文件</p><p>通常用于调试和检查 ZooKeeper 运行时的异常情况</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 前台运行命令</span><br>/opt/module/zookeeper/bin/zkServer.sh start-foreground<br></code></pre></td></tr></table></figure><h2 id="停止Zookeeper"><a href="#停止Zookeeper" class="headerlink" title="停止Zookeeper"></a>停止Zookeeper</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 停止master节点的zookeeper服务</span><br>/opt/module/zookeeper/bin/zkServer.sh stop<br><br><span class="hljs-comment"># 停止slave1节点的zookeeper服务</span><br>ssh slave1 <span class="hljs-string">'/opt/module/zookeeper/bin/zkServer.sh stop'</span><br><br><span class="hljs-comment"># 停止slave2节点的zookeeper服务</span><br>ssh slave2 <span class="hljs-string">'/opt/module/zookeeper/bin/zkServer.sh stop'</span><br></code></pre></td></tr></table></figure><hr><h1 id="参考文档"><a href="#参考文档" class="headerlink" title="参考文档"></a>参考文档</h1><ol><li><p><a href="https://blog.csdn.net/m0_46580173/article/details/121110866">解决问题Client port found: 2181. Client address: localhost. Client SSL: false.-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/weixin_47025166/article/details/125405156?spm=1001.2014.3001.5502">Linux环境下zookeeper的安装教程(超详细!!)_linux zk安装-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/weixin_47025166/article/details/125415538">zookeeper集群搭建步骤(超详细)-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/white_mvlog/article/details/112878757">ZooKeeper JMX enabled by default Using config……完美解决-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/T_Y_F_/article/details/127913305">启动ZooKeeper报错ZooKeeper JMX enabled by default Using config: /usr/Local/ zookeeper/bin/ . ./conf/zoo.-CSDN博客</a></p></li></ol>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>大数据</tag>
<tag>ZooKeeper</tag>
</tags>
</entry>
<entry>
<title>搭建完全分布式Hadoop集群(shell一键脚本)</title>
<link href="/2024/11/17/%E6%90%AD%E5%BB%BA%E5%AE%8C%E5%85%A8%E5%88%86%E5%B8%83%E5%BC%8FHadoop%E9%9B%86%E7%BE%A4%EF%BC%88shell%E4%B8%80%E9%94%AE%E8%84%9A%E6%9C%AC%EF%BC%89/"/>
<url>/2024/11/17/%E6%90%AD%E5%BB%BA%E5%AE%8C%E5%85%A8%E5%88%86%E5%B8%83%E5%BC%8FHadoop%E9%9B%86%E7%BE%A4%EF%BC%88shell%E4%B8%80%E9%94%AE%E8%84%9A%E6%9C%AC%EF%BC%89/</url>
<content type="html"><![CDATA[<h1 id="搭建完全分布式Hadoop集群(shell一键脚本)"><a href="#搭建完全分布式Hadoop集群(shell一键脚本)" class="headerlink" title="搭建完全分布式Hadoop集群(shell一键脚本)"></a>搭建完全分布式Hadoop集群(shell一键脚本)</h1><ul><li>本次实验环境:Centos 7-2009、Hadoop-3.1.4、JDK 8</li></ul><h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><h3 id="1-安装三台及以上的linux服务器"><a href="#1-安装三台及以上的linux服务器" class="headerlink" title="1. 安装三台及以上的linux服务器"></a>1. 安装三台及以上的linux服务器</h3><blockquote><p>主机名随意取,只要便于区分节点的功能即可</p></blockquote><table><thead><tr><th>主机名</th><th>IP地址</th></tr></thead><tbody><tr><td>master</td><td>192.168.66.6</td></tr><tr><td>slave1</td><td>192.168.66.7</td></tr><tr><td>slave2</td><td>192.168.66.21</td></tr></tbody></table><blockquote><p>规划</p></blockquote><table><thead><tr><th align="center"></th><th align="center">master</th><th align="center">slave1</th><th align="center">slave2</th></tr></thead><tbody><tr><td align="center">HDFS</td><td align="center">NameNode<br>DataNode</td><td align="center">SecondaryNameNode<br>DataNode</td><td align="center">DataNode</td></tr><tr><td align="center">YARN</td><td align="center">ResourceManager<br>NodeManager</td><td align="center">NodeManager</td><td align="center">NodeManager</td></tr></tbody></table><h4 id="1-1-修改主机名"><a href="#1-1-修改主机名" class="headerlink" title="1.1 修改主机名"></a>1.1 修改主机名</h4><blockquote><p>使用SSH分别连接三台及以上的实验服务器</p></blockquote><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">修改Master节点的主机名</span><br>hostnamectl set-hostname master<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">修改slave1节点的主机名</span><br>hostnamectl set-hostname slave1<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">修改slave2节点的主机名</span><br>hostnamectl set-hostname slave2<br></code></pre></td></tr></table></figure><h4 id="1-2-修改Hosts文件"><a href="#1-2-修改Hosts文件" class="headerlink" title="1.2 修改Hosts文件"></a>1.2 修改Hosts文件</h4><blockquote><p>这一步在Master节点上进行,后续通过工具同步到其他机器</p><ul><li>注意:需要将以下内容中的IP地址以及主机名修改为自己的实验环境</li></ul></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cat</span> >> /etc/hosts << <span class="hljs-string">EOF</span><br><span class="hljs-string"># ------hadoop主机名解析 配置--------</span><br><span class="hljs-string">192.168.66.6 master </span><br><span class="hljs-string">192.168.66.7 slave1 </span><br><span class="hljs-string">192.168.66.21 slave2 </span><br><span class="hljs-string">EOF</span><br></code></pre></td></tr></table></figure><h3 id="2-关闭Selinux"><a href="#2-关闭Selinux" class="headerlink" title="2. 关闭Selinux"></a>2. 关闭Selinux</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 临时关闭selinux</span><br>setenforce 0<br><br><span class="hljs-comment"># 永久关闭selinux</span><br>sed -i <span class="hljs-string">'s|SELINUX=enforcing|SELINUX=disabled|'</span> /etc/selinux/config<br></code></pre></td></tr></table></figure><h3 id="3-配置主节点SSH免密钥登录集群"><a href="#3-配置主节点SSH免密钥登录集群" class="headerlink" title="3. 配置主节点SSH免密钥登录集群"></a>3. 配置主节点SSH免密钥登录集群</h3><blockquote><p><strong>配置解释</strong></p><ol><li><p><code>ssh-keygen -t ed25519 -P '' -f ~/.ssh/id_ed25519</code></p><ul><li><p><code>ed25519</code> 表示生成一个ed25519类型的密钥</p><p>1.1 <code>rsa</code> - RSA密钥,这是SSH中最传统的密钥类型。默认长度是2048位,但推荐使用更长的密钥(例如3072位或4096位)以提高安全性。</p><p>1.2 <code>dsa</code> - DSA密钥,但这个选项已经不被推荐使用,因为它被认为不够安全。</p><p>1.3 <code>ecdsa</code> - ECDSA(椭圆曲线数字签名算法)密钥,提供了比RSA更好的性能和安全性。它支持不同的曲线,如<code>nistp256</code>(默认)、<code>nistp384</code>和<code>nistp521</code>。</p><p>1.4 <code>ed25519</code> - Ed25519密钥,这是目前推荐使用的密钥类型,因为它提供了非常好的性能和安全性。</p></li><li><p><code>-P ''</code> 表示生成密钥时不需要密码(空密码)</p></li><li><p><code>-f ~/.ssh/id_ed25519</code> 指定生成的私钥和公钥文件的路径和文件名</p></li></ul></li><li><p><code>ssh-copy-id 192.168.66.6</code></p><ul><li>这个命令将本地的公钥复制到远程服务器<code>192.168.66.6</code>的<code>~/.ssh/authorized_keys</code>文件中,从而允许无密码SSH登录到该服务器</li></ul></li></ol><p>执行这些命令时,系统可能会提示你输入远程服务器的密码,以完成公钥的复制过程。一旦完成,你就可以从本地机器无密码SSH登录到指定的远程服务器</p></blockquote><h4 id="3-1-在master节点上执行"><a href="#3-1-在master节点上执行" class="headerlink" title="3.1 在master节点上执行"></a>3.1 在master节点上执行</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash">ssh-keygen -t ed25519 -P <span class="hljs-string">""</span> -f ~/.ssh/id_ed25519<br>ssh-copy-id root@master<br>ssh-copy-id root@slave1<br>ssh-copy-id root@slave2<br><br></code></pre></td></tr></table></figure><h4 id="3-2-(可选)在slave1节点上执行"><a href="#3-2-(可选)在slave1节点上执行" class="headerlink" title="3.2 (可选)在slave1节点上执行"></a>3.2 (可选)在slave1节点上执行</h4><blockquote><p>如需要slave1节点免密钥登录集群,则执行这一步</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash">ssh-keygen -t ed25519 -P <span class="hljs-string">""</span> -f ~/.ssh/id_ed25519<br>ssh-copy-id root@master<br>ssh-copy-id root@slave1<br>ssh-copy-id root@slave2<br><br></code></pre></td></tr></table></figure><h4 id="3-3-(可选)在slave2上执行"><a href="#3-3-(可选)在slave2上执行" class="headerlink" title="3.3 (可选)在slave2上执行"></a>3.3 (可选)在slave2上执行</h4><blockquote><p>如需要slave2节点免密钥登录集群,则执行这一步</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash">ssh-keygen -t ed25519 -P <span class="hljs-string">""</span> -f ~/.ssh/id_ed25519<br>ssh-copy-id root@master<br>ssh-copy-id root@slave1<br>ssh-copy-id root@slave2<br><br></code></pre></td></tr></table></figure><h3 id="4-安装JDK"><a href="#4-安装JDK" class="headerlink" title="4. 安装JDK"></a>4. 安装JDK</h3><blockquote><p>这一步,首先在master上做,随后通过工具将更改的文件同步到另外几台机器</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 创建文件存放目录</span><br><span class="hljs-built_in">mkdir</span> /opt/module<br><br><span class="hljs-comment"># 进入临时文件目录</span><br><span class="hljs-built_in">cd</span> /tmp<br><br><span class="hljs-comment"># 下载jdk 8</span><br>wget -c https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz<br><br><span class="hljs-comment"># 解压文件到指定目录</span><br>tar -zxvf /tmp/jdk-8u202-linux-x64.tar.gz -C /opt/module<br><br><span class="hljs-comment"># 设置当前用户的Java环境变量</span><br><span class="hljs-built_in">cat</span> >> ~/.bashrc << <span class="hljs-string">"EOF"</span><br><br><span class="hljs-comment"># ------------------- JAVA 配置--------------------</span><br><span class="hljs-comment"># 设置JAVA_HOME环境变量,指向JDK安装目录</span><br><span class="hljs-built_in">export</span> JAVA_HOME=/opt/module/jdk1.8.0_202<br><br><span class="hljs-comment"># 将JAVA_HOME的bin目录添加到PATH环境变量</span><br><span class="hljs-built_in">export</span> PATH=<span class="hljs-variable">$PATH</span>:<span class="hljs-variable">$JAVA_HOME</span>/bin<br><span class="hljs-comment"># -------------------------------------------------</span><br>EOF<br><br><span class="hljs-comment"># 使变量生效</span><br><span class="hljs-built_in">source</span> ~/.bashrc<br></code></pre></td></tr></table></figure><h3 id="5-(可选)设置root用户环境变量"><a href="#5-(可选)设置root用户环境变量" class="headerlink" title="5. (可选)设置root用户环境变量"></a>5. (可选)设置root用户环境变量</h3><blockquote><ul><li><p>首先在master节点上做,随后通过工具将更改的文件同步到另外几台机器</p></li><li><p>hadoop通常不建议以root用户身份来启动服务,因为这可能会导致安全漏洞</p></li></ul></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cat</span> >> ~/.bashrc << <span class="hljs-string">EOF</span><br><span class="hljs-string"># 设置hadoop的root用户环境变量</span><br><span class="hljs-string">export HDFS_NAMENODE_USER=root</span><br><span class="hljs-string">export HDFS_DATANODE_USER=root</span><br><span class="hljs-string">export HDFS_SECONDARYNAMENODE_USER=root</span><br><span class="hljs-string">export YARN_RESOURCEMANAGER_USER=root</span><br><span class="hljs-string">export YARN_NODEMANAGER_USER=root</span><br><span class="hljs-string">EOF</span><br><br><span class="hljs-comment"># 使变量生效</span><br><span class="hljs-built_in">source</span> ~/.bashrc<br></code></pre></td></tr></table></figure><h3 id="6-同步所需的文件"><a href="#6-同步所需的文件" class="headerlink" title="6. 同步所需的文件"></a>6. 同步所需的文件</h3><blockquote><p>根据自己的情况,更改主机名,或使用IP地址</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 同步到slave1机器</span><br>scp /etc/selinux/config slave1:/etc/selinux/config<br>scp -r /opt/module slave1:/opt/<br>scp ~/.bashrc slave1:/root<br>scp /etc/hosts slave1:/etc/<br><br><span class="hljs-comment"># 同步到slave2机器</span><br>scp /etc/selinux/config slave2:/etc/selinux/config<br>scp -r /opt/module slave2:/opt/<br>scp ~/.bashrc slave2:/root<br>scp /etc/hosts slave2:/etc/<br><br><span class="hljs-comment"># 在slave1上加载环境变量</span><br>ssh slave1 <span class="hljs-string">'source ~/.bashrc'</span><br><br><span class="hljs-comment"># 在slave2上加载环境变量</span><br>ssh slave2 <span class="hljs-string">'source ~/.bashrc'</span><br></code></pre></td></tr></table></figure><h3 id="7-关闭防火墙(可选)"><a href="#7-关闭防火墙(可选)" class="headerlink" title="7. 关闭防火墙(可选)"></a>7. 关闭防火墙(可选)</h3><blockquote><p>生产环境仅仅需要放行需要的端口即可,不需要关闭防火墙</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 关闭master节点的防火墙</span><br>systemctl stop firewalld<br><br><span class="hljs-comment"># 禁用master节点的防火墙开机自启动</span><br>systemctl <span class="hljs-built_in">disable</span> firewalld<br><br><span class="hljs-comment"># 在slave1上停止防火墙</span><br>ssh slave1 <span class="hljs-string">'systemctl stop firewalld'</span><br><br><span class="hljs-comment"># 禁用slave1节点的防火墙开机自启动</span><br>ssh slave1 <span class="hljs-string">'systemctl disable firewalld'</span><br><br><span class="hljs-comment"># 在slave2上停止防火墙</span><br>ssh slave2 <span class="hljs-string">'systemctl stop firewalld'</span><br><br><span class="hljs-comment"># 禁用slave2节点的防火墙开机自启动</span><br>ssh slave2 <span class="hljs-string">'systemctl disable firewalld'</span><br></code></pre></td></tr></table></figure><h3 id="8-重启服务器"><a href="#8-重启服务器" class="headerlink" title="8. 重启服务器"></a>8. 重启服务器</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 重启slave1服务器</span><br>ssh slave1 <span class="hljs-string">'reboot'</span><br><br><span class="hljs-comment"># 重启slave2服务器</span><br>ssh slave2 <span class="hljs-string">'reboot'</span><br><br><span class="hljs-comment"># 重启master服务器</span><br>reboot<br></code></pre></td></tr></table></figure><h2 id="一键脚本安装开始"><a href="#一键脚本安装开始" class="headerlink" title="一键脚本安装开始"></a>一键脚本安装开始</h2><h3 id="9-复制粘贴脚本"><a href="#9-复制粘贴脚本" class="headerlink" title="9. 复制粘贴脚本"></a>9. 复制粘贴脚本</h3><blockquote><p>将以下脚本内容复制并保存到/tmp/install_hadoop_cluster.sh文件</p><ul><li>只需要更改第4-6行中IP地址的内容</li></ul></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-meta">#!/bin/bash</span><br><br><span class="hljs-comment"># 设置3个节点的主机名或ip地址,修改为自己的</span><br>host_node1=master<br>host_node2=slave1<br>host_node3=slave2<br><br><span class="hljs-comment"># 安装版本</span><br>ha_version=<span class="hljs-string">"3.1.4"</span><br><span class="hljs-comment"># 安装目录</span><br>ha_installDir=<span class="hljs-string">"/opt/module"</span><br><br><span class="hljs-function"><span class="hljs-title">install_hadoop</span></span>() {<br> <span class="hljs-built_in">local</span> version=<span class="hljs-variable">$1</span><br> <span class="hljs-built_in">local</span> installDir=<span class="hljs-variable">$2</span><br> <span class="hljs-built_in">local</span> node1=<span class="hljs-variable">$3</span><br> <span class="hljs-built_in">local</span> node2=<span class="hljs-variable">$4</span><br> <span class="hljs-built_in">local</span> node3=<span class="hljs-variable">$5</span><br><br> <span class="hljs-comment"># 下载地址</span><br> <span class="hljs-built_in">local</span> downloadUrl=<span class="hljs-string">"https://repo.huaweicloud.com/apache/hadoop/common/hadoop-<span class="hljs-variable">$version</span>/hadoop-<span class="hljs-variable">$version</span>.tar.gz"</span><br> <span class="hljs-keyword">if</span> [ -z <span class="hljs-string">"<span class="hljs-subst">$(command -v wget)</span>"</span> ]; <span class="hljs-keyword">then</span><br> <span class="hljs-built_in">sudo</span> yum install -y wget<br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"wget安装完成"</span><br> <span class="hljs-keyword">fi</span><br> <span class="hljs-keyword">if</span> [ -z <span class="hljs-string">"<span class="hljs-variable">$JAVA_HOME</span>"</span> ]; <span class="hljs-keyword">then</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"JAVA_HOME未设置,请安装jdk1.8,设置Java环境变量再来执行此脚本"</span><br> <span class="hljs-built_in">exit</span> 1<br> <span class="hljs-keyword">fi</span><br> <span class="hljs-keyword">if</span> [ ! -d <span class="hljs-string">"<span class="hljs-variable">${installDir}</span>"</span> ]; <span class="hljs-keyword">then</span><br> <span class="hljs-built_in">sudo</span> <span class="hljs-built_in">mkdir</span> -p <span class="hljs-string">"<span class="hljs-variable">${installDir}</span>"</span><br> <span class="hljs-keyword">if</span> [ $? -eq 0 ]; <span class="hljs-keyword">then</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"安装目录<span class="hljs-variable">${installDir}</span>已创建"</span><br> <span class="hljs-keyword">else</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"请确保您有足够的权限来创建目录,请增加权限后再次执行"</span><br> <span class="hljs-built_in">exit</span> 1<br> <span class="hljs-keyword">fi</span><br> <span class="hljs-keyword">fi</span><br> <span class="hljs-keyword">if</span> [ ! -f /tmp/hadoop-<span class="hljs-string">"<span class="hljs-variable">$version</span>"</span>.tar.gz ] ; <span class="hljs-keyword">then</span><br> wget <span class="hljs-string">"<span class="hljs-variable">$downloadUrl</span>"</span> -P /tmp<br> <span class="hljs-keyword">if</span> [ $? -eq 0 ]; <span class="hljs-keyword">then</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"hadoop-<span class="hljs-variable">$version</span>.tar.gz下载成功"</span><br> <span class="hljs-keyword">else</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"hadoop-<span class="hljs-variable">$version</span>.tar.gz下载失败,请重试或手动下载到/tmp目录下再次执行"</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"下载地址:<span class="hljs-variable">$downloadUrl</span>"</span><br> <span class="hljs-built_in">exit</span> 1<br> <span class="hljs-keyword">fi</span><br> <span class="hljs-keyword">else</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"/tmp/hadoop-<span class="hljs-variable">$version</span>.tar.gz文件已存在"</span><br> <span class="hljs-keyword">fi</span><br><br> <span class="hljs-keyword">if</span> [ -d <span class="hljs-string">"<span class="hljs-variable">${installDir}</span>"</span>/hadoop-<span class="hljs-string">"<span class="hljs-variable">$version</span>"</span> ]; <span class="hljs-keyword">then</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"<span class="hljs-variable">${installDir}</span>/hadoop-<span class="hljs-variable">$version</span> 已存在,正在删除..."</span><br> <span class="hljs-built_in">sudo</span> <span class="hljs-built_in">rm</span> -rf <span class="hljs-string">"<span class="hljs-variable">${installDir}</span>"</span>/hadoop-<span class="hljs-string">"<span class="hljs-variable">$version</span>"</span><br> <span class="hljs-keyword">fi</span><br> tar -zxvf /tmp/hadoop-<span class="hljs-string">"<span class="hljs-variable">$version</span>"</span>.tar.gz -C <span class="hljs-string">"<span class="hljs-variable">${installDir}</span>"</span><br> <span class="hljs-keyword">if</span> [ $? -eq 0 ]; <span class="hljs-keyword">then</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"/tmp/hadoop-<span class="hljs-variable">$version</span>.tar.gz解压成功"</span><br> <span class="hljs-keyword">else</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"/tmp/hadoop-<span class="hljs-variable">$version</span>.tar.gz解压失败,请查看异常信息后重试"</span><br> <span class="hljs-built_in">exit</span> 1<br> <span class="hljs-keyword">fi</span><br><br> <span class="hljs-keyword">if</span> [ -z <span class="hljs-string">"<span class="hljs-variable">$HADOOP_HOME</span>"</span> ]; <span class="hljs-keyword">then</span><br> <span class="hljs-comment"># 设置hadoop的用户环境变量</span><br> <span class="hljs-built_in">echo</span> >> ~/.bashrc<br> <span class="hljs-built_in">echo</span> <span class="hljs-string">'# ------------------- Hadoop 配置--------------------'</span> >> ~/.bashrc<br> <span class="hljs-built_in">echo</span> <span class="hljs-string">'# HADOOP_HOME'</span> >> ~/.bashrc<br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"export HADOOP_HOME=<span class="hljs-variable">${installDir}</span>/hadoop-<span class="hljs-variable">${version}</span>"</span> >> ~/.bashrc<br> <span class="hljs-built_in">echo</span> <span class="hljs-string">'export PATH=$PATH:$HADOOP_HOME/bin'</span> >> ~/.bashrc<br> <span class="hljs-built_in">echo</span> <span class="hljs-string">'# -------------------------------------------------'</span> >> ~/.bashrc<br> <span class="hljs-keyword">else</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"HADOOP_HOME已有设置:<span class="hljs-variable">$HADOOP_HOME</span>"</span><br> <span class="hljs-keyword">fi</span><br><br> <span class="hljs-comment"># 配置hadoop</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"配置hadoop..."</span><br> coresite=<span class="hljs-string">"\</span><br><span class="hljs-string"> <configuration>\n\</span><br><span class="hljs-string"> <!--指定NameNode的地址-->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>fs.defaultFS</name>\n\</span><br><span class="hljs-string"> <value>hdfs://<span class="hljs-variable">$node1</span>:8020</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> <!--指定hadoop数据的临时存储目录-->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>hadoop.tmp.dir</name>\n\</span><br><span class="hljs-string"> <value><span class="hljs-variable">$installDir</span>/hadoop-<span class="hljs-variable">$version</span>/tmp</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> <!-- 配置访问hadoop的权限,能够让hive访问到 -->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>hadoop.proxyuser.root.hosts</name>\n\</span><br><span class="hljs-string"> <value>*</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>hadoop.proxyuser.root.users</name>\n\</span><br><span class="hljs-string"> <value>root</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> </configuration>\</span><br><span class="hljs-string"> "</span><br> hdfssite=<span class="hljs-string">"\</span><br><span class="hljs-string"> <configuration>\n\</span><br><span class="hljs-string"> <!-- namenode web端访问地址-->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>dfs.namenode.http-address</name>\n\</span><br><span class="hljs-string"> <value><span class="hljs-variable">$node1</span>:9870</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> <!-- secondarynamenode web端访问地址-->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>dfs.namenode.secondary.http-address</name>\n\</span><br><span class="hljs-string"> <value><span class="hljs-variable">$node2</span>:9868</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>dfs.permissions.enabled</name>\n\</span><br><span class="hljs-string"> <value>false</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>dfs.replication</name>\n\</span><br><span class="hljs-string"> <value>3</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> </configuration>\</span><br><span class="hljs-string"> "</span><br> mapredsite=<span class="hljs-string">"\</span><br><span class="hljs-string"> <configuration>\n\</span><br><span class="hljs-string"> <!--指定MapReduce程序运行在Yarn上-->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>mapreduce.framework.name</name>\n\</span><br><span class="hljs-string"> <value>yarn</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> <!--历史服务器端地址-->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>mapreduce.jobhistory.address</name>\n\</span><br><span class="hljs-string"> <value><span class="hljs-variable">$node1</span>:10020</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> <!--历史服务器web端地址-->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>mapreduce.jobhistory.webapp.address</name>\n\</span><br><span class="hljs-string"> <value><span class="hljs-variable">$node1</span>:19888</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> </configuration>\</span><br><span class="hljs-string"> "</span><br> yarnsite=<span class="hljs-string">"\</span><br><span class="hljs-string"> <configuration>\n\</span><br><span class="hljs-string"> <!--指定MR走shuffle -->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>yarn.nodemanager.aux-services</name>\n\</span><br><span class="hljs-string"> <value>mapreduce_shuffle</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> <!--指定ResourceManager的地址-->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>yarn.resourcemanager.hostname</name>\n\</span><br><span class="hljs-string"> <value><span class="hljs-variable">$node1</span></value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> <!--环境变量的继承-->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>yarn.nodemanager.env-whitelist</name>\n\</span><br><span class="hljs-string"> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> <!--开启日志聚集功能-->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>yarn.log-aggregation-enable</name>\n\</span><br><span class="hljs-string"> <value>true</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> <!--设置日志聚集服务器地址-->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>yarn.log.server.url</name>\n\</span><br><span class="hljs-string"> <value>http://<span class="hljs-variable">$node1</span>:19888/jobhistory/logs</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> <!--设置日志保留时间为7天-->\n\</span><br><span class="hljs-string"> <property>\n\</span><br><span class="hljs-string"> <name>yarn.log-aggregation.retain-seconds</name>\n\</span><br><span class="hljs-string"> <value>604800</value>\n\</span><br><span class="hljs-string"> </property>\n\</span><br><span class="hljs-string"> </configuration>\</span><br><span class="hljs-string"> "</span><br> sed -i <span class="hljs-string">'/<configuration>/,/<\/configuration>/c '</span><span class="hljs-string">"<span class="hljs-variable">$coresite</span>"</span><span class="hljs-string">''</span> <span class="hljs-string">"<span class="hljs-variable">$installDir</span>"</span>/hadoop-<span class="hljs-string">"<span class="hljs-variable">$version</span>"</span>/etc/hadoop/core-site.xml<br> sed -i <span class="hljs-string">'/<configuration>/,/<\/configuration>/c '</span><span class="hljs-string">"<span class="hljs-variable">$hdfssite</span>"</span><span class="hljs-string">''</span> <span class="hljs-string">"<span class="hljs-variable">$installDir</span>"</span>/hadoop-<span class="hljs-string">"<span class="hljs-variable">$version</span>"</span>/etc/hadoop/hdfs-site.xml<br> sed -i <span class="hljs-string">'/<configuration>/,/<\/configuration>/c '</span><span class="hljs-string">"<span class="hljs-variable">$mapredsite</span>"</span><span class="hljs-string">''</span> <span class="hljs-string">"<span class="hljs-variable">$installDir</span>"</span>/hadoop-<span class="hljs-string">"<span class="hljs-variable">$version</span>"</span>/etc/hadoop/mapred-site.xml<br> sed -i <span class="hljs-string">'/<configuration>/,/<\/configuration>/c '</span><span class="hljs-string">"<span class="hljs-variable">$yarnsite</span>"</span><span class="hljs-string">''</span> <span class="hljs-string">"<span class="hljs-variable">$installDir</span>"</span>/hadoop-<span class="hljs-string">"<span class="hljs-variable">$version</span>"</span>/etc/hadoop/yarn-site.xml<br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"<span class="hljs-variable">$node1</span>"</span> > <span class="hljs-string">"<span class="hljs-variable">$installDir</span>"</span>/hadoop-<span class="hljs-string">"<span class="hljs-variable">$version</span>"</span>/etc/hadoop/workers<br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"<span class="hljs-variable">$node2</span>"</span> >> <span class="hljs-string">"<span class="hljs-variable">$installDir</span>"</span>/hadoop-<span class="hljs-string">"<span class="hljs-variable">$version</span>"</span>/etc/hadoop/workers<br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"<span class="hljs-variable">$node3</span>"</span> >> <span class="hljs-string">"<span class="hljs-variable">$installDir</span>"</span>/hadoop-<span class="hljs-string">"<span class="hljs-variable">$version</span>"</span>/etc/hadoop/workers<br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"hadoop的配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml都已配置完成"</span><br><br> <span class="hljs-built_in">local</span> ip_addr=$(ip addr | grep <span class="hljs-string">'inet '</span> | awk <span class="hljs-string">'{print $2}'</span>| <span class="hljs-built_in">tail</span> -n 1 | grep -oP <span class="hljs-string">'\d+\.\d+\.\d+\.\d+'</span>)<br> <span class="hljs-keyword">if</span> [[ <span class="hljs-string">"<span class="hljs-variable">$node1</span>"</span> == <span class="hljs-string">"<span class="hljs-subst">$(hostname)</span>"</span> || <span class="hljs-string">"<span class="hljs-variable">$node1</span>"</span> == <span class="hljs-string">"<span class="hljs-variable">$ip_addr</span>"</span> ]]; <span class="hljs-keyword">then</span><br> <span class="hljs-string">"<span class="hljs-variable">$installDir</span>"</span>/hadoop-<span class="hljs-string">"<span class="hljs-variable">$version</span>"</span>/bin/hdfs namenode -format<br> <span class="hljs-keyword">if</span> [ $? -eq 0 ]; <span class="hljs-keyword">then</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"格式化namenode成功"</span><br> <span class="hljs-keyword">else</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"格式化namenode失败"</span><br> <span class="hljs-built_in">exit</span> 1<br> <span class="hljs-keyword">fi</span><br> <span class="hljs-keyword">fi</span><br><span class="hljs-comment"># rm -rf /tmp/hadoop-"$version".tar.gz</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"hadoop下载、安装、配置完成"</span><br>}<br><br>install_hadoop <span class="hljs-string">"<span class="hljs-variable">$ha_version</span>"</span> <span class="hljs-string">"<span class="hljs-variable">$ha_installDir</span>"</span> <span class="hljs-string">"<span class="hljs-variable">$host_node1</span>"</span> <span class="hljs-string">"<span class="hljs-variable">$host_node2</span>"</span> <span class="hljs-string">"<span class="hljs-variable">$host_node3</span>"</span><br></code></pre></td></tr></table></figure><h3 id="10-增加执行权限"><a href="#10-增加执行权限" class="headerlink" title="10. 增加执行权限"></a>10. 增加执行权限</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">chmod</span> a+x /tmp/install_hadoop_cluster.sh<br></code></pre></td></tr></table></figure><h3 id="11-执行脚本"><a href="#11-执行脚本" class="headerlink" title="11. 执行脚本"></a>11. 执行脚本</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 在master上执行</span><br>/tmp/install_hadoop_cluster.sh<br><br><br></code></pre></td></tr></table></figure><blockquote><p>安装配置完成会有提示,如有异常,请查看提示或报错信息</p></blockquote><h3 id="12-分发配置文件"><a href="#12-分发配置文件" class="headerlink" title="12. 分发配置文件"></a>12. 分发配置文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 分发hadoop的配置文件到slave1</span><br>scp -r /opt/module/hadoop-3.1.4 slave1:/opt/module<br><br><span class="hljs-comment"># 分发hadoop的配置文件到slave2</span><br>scp -r /opt/module/hadoop-3.1.4 slave2:/opt/module<br><br><span class="hljs-comment"># 分发用户环境变量到slave1</span><br>scp ~/.bashrc slave1:/root<br><br><span class="hljs-comment"># 分发用户环境变量到slave2</span><br>scp ~/.bashrc slave2:/root<br><br><br></code></pre></td></tr></table></figure><h3 id="13-加载用户环境变量"><a href="#13-加载用户环境变量" class="headerlink" title="13. 加载用户环境变量"></a>13. 加载用户环境变量</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 在master上加载环境变量</span><br><span class="hljs-built_in">source</span> ~/.bashrc<br><br><span class="hljs-comment"># 在slave1上加载环境变量</span><br>ssh slave1 <span class="hljs-string">'source ~/.bashrc'</span><br><br><span class="hljs-comment"># 在slave2上加载环境变量</span><br>ssh slave2 <span class="hljs-string">'source ~/.bashrc'</span><br></code></pre></td></tr></table></figure><h3 id="14-启动hadoop集群"><a href="#14-启动hadoop集群" class="headerlink" title="14. 启动hadoop集群"></a>14. 启动hadoop集群</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 启动hadoop集群</span><br><span class="hljs-variable">$HADOOP_HOME</span>/sbin/start-all.sh<br><br><span class="hljs-comment"># 停止hadoop集群</span><br><span class="hljs-variable">$HADOOP_HOME</span>/sbin/stop-all.sh<br><br><br></code></pre></td></tr></table></figure><blockquote><p>启动后会有提示信息,如有异常,请查看提示或报错信息</p></blockquote><h3 id="15-浏览器访问"><a href="#15-浏览器访问" class="headerlink" title="15. 浏览器访问"></a>15. 浏览器访问</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash">访问HDFS;地址:http://192.168.66.6:9870<br><br>这个地址是master的IP地址,端口号是9870<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash">访问Yarn;地址:http://192.168.7:8088<br><br>这个地址是master的IP地址,端口号是8088<br></code></pre></td></tr></table></figure><h3 id="16-查看Hadoop进程"><a href="#16-查看Hadoop进程" class="headerlink" title="16. 查看Hadoop进程"></a>16. 查看Hadoop进程</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 查看master节点Hadoop启动的Java进程</span><br>jps <br><br><span class="hljs-comment"># Master节点会存在以下四个Java进程</span><br>NameNode DataNode NodeManager ResourceManager<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 查看slave1节点Hadoop启动的Java进程</span><br>ssh slave1 jps<br><br><span class="hljs-comment"># Slave1节点会存在以下三个Java进程</span><br>SecondaryNameNode DataNode NodeManager <br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 查看slave2节点Hadoop启动的Java进程</span><br>ssh slave2 jps<br><br><span class="hljs-comment"># Slave2节点会存在以下两个Java进程</span><br>DataNode NodeManager<br></code></pre></td></tr></table></figure><h2 id="使用hadoop计算数据"><a href="#使用hadoop计算数据" class="headerlink" title="使用hadoop计算数据"></a>使用hadoop计算数据</h2><h3 id="17-计算π的值"><a href="#17-计算π的值" class="headerlink" title="17. 计算π的值"></a>17. 计算π的值</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 查看Yarn当前可用的命令</span><br>yarn jar /opt/module/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar<br><br><span class="hljs-comment"># 通过hadoop集群计算π的值</span><br>yarn jar /opt/module/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar pi 10 10<br></code></pre></td></tr></table></figure><h3 id="18-查看当前Yarn状态"><a href="#18-查看当前Yarn状态" class="headerlink" title="18. 查看当前Yarn状态"></a>18. 查看当前Yarn状态</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 通过命令行查看</span><br>yarn application -status application_任务戳<br><br><span class="hljs-comment"># 通过Web查看</span><br>http://192.168.66.6:8088/<br><span class="hljs-comment"># 这个IP是master的IP地址</span><br></code></pre></td></tr></table></figure><hr><h1 id="参考文档"><a href="#参考文档" class="headerlink" title="参考文档"></a>参考文档</h1><ul><li><p><a href="https://blog.csdn.net/zcs2312852665/article/details/136545879">hadoop集群部署教程_hadoop部署-CSDN博客</a></p></li><li><p><a href="https://blog.csdn.net/zcs2312852665/article/details/134810782">hadoop安装与配置-shell脚本一键安装配置(集群版)_急速完成hadoop按照-CSDN博客</a></p></li><li><p><a href="https://repo.huaweicloud.com/apache/hadoop/common/">https://repo.huaweicloud.com/apache/hadoop/common/</a></p></li><li><p><a href="https://archive.apache.org/dist/hadoop/common/">https://archive.apache.org/dist/hadoop/common/</a></p></li></ul>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>大数据</tag>
<tag>Hadoop</tag>
</tags>
</entry>
<entry>
<title>Word使用小技巧</title>
<link href="/2024/11/13/Word%E4%BD%BF%E7%94%A8%E5%B0%8F%E6%8A%80%E5%B7%A7/"/>
<url>/2024/11/13/Word%E4%BD%BF%E7%94%A8%E5%B0%8F%E6%8A%80%E5%B7%A7/</url>
<content type="html"><![CDATA[<h1 id="需要在word中打“√”和“×”"><a href="#需要在word中打“√”和“×”" class="headerlink" title="需要在word中打“√”和“×”"></a>需要在word中打“√”和“×”</h1><ol><li>首先输入2611</li><li>随后按住<code>Alt</code>和<code>x</code></li></ol><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">对应代码</span><br>2610 ——— ☐<br>2611 ——— ☑<br>2612 ——— ☒<br>2613 ——— ☓<br></code></pre></td></tr></table></figure>]]></content>
<categories>
<category>工具</category>
</categories>
<tags>
<tag>Office</tag>
</tags>
</entry>
<entry>
<title>大数据运维</title>
<link href="/2024/11/10/%E5%A4%A7%E6%95%B0%E6%8D%AE%E8%BF%90%E7%BB%B4/"/>
<url>/2024/11/10/%E5%A4%A7%E6%95%B0%E6%8D%AE%E8%BF%90%E7%BB%B4/</url>
<content type="html"><![CDATA[<h1 id="大数据运维"><a href="#大数据运维" class="headerlink" title="大数据运维"></a>大数据运维</h1><hr><h2 id="技术方案"><a href="#技术方案" class="headerlink" title="技术方案"></a>技术方案</h2><blockquote><p>Hadoop是最受欢迎、最成熟、应用最广的大数据系统架构之一</p></blockquote><table><thead><tr><th align="center">方案</th><th align="center">组件</th></tr></thead><tbody><tr><td align="center">静态数据的批量处理</td><td align="center">Hadoop</td></tr><tr><td align="center">流式数据的实时处理</td><td align="center">Storm</td></tr><tr><td align="center">交互式数据处理</td><td align="center">Spark</td></tr></tbody></table><h2 id="大数据主流工具"><a href="#大数据主流工具" class="headerlink" title="大数据主流工具"></a>大数据主流工具</h2><table><thead><tr><th align="center">名称</th><th align="center">描述</th></tr></thead><tbody><tr><td align="center">Hadoop</td><td align="center">是一个具有<code>分布式存储(HDFS)</code>和<code>分布式计算(MapReduce)</code>的大数据处理框架</td></tr><tr><td align="center">ZooKeeper</td><td align="center">是Hadoop和HBase的重要组件;是一个分布式的、开放源码的分布式应用程序协调服务</td></tr><tr><td align="center">HBase</td><td align="center">是一个高可靠性、高拓展性、面向列、可伸缩的分布式结构化存储系统</td></tr><tr><td align="center">Spark</td><td align="center">是专为大规模数据处理而设计的快速通用的计算引擎;<br>是一种与<code>Hadoop</code>相似的开源集群计算环境;</td></tr><tr><td align="center">Hive</td><td align="center">可以存储、查询和分析存储在Hadoop中的大规模数据</td></tr><tr><td align="center">MongoDB</td><td align="center">是一个基于分布式文件存储的数据库</td></tr><tr><td align="center">Kafka</td><td align="center">是一种高吞吐量的分布式发布订阅消息系统</td></tr><tr><td align="center">Storm</td><td align="center">是一个实施的、分布式以及高容错的计算系统</td></tr><tr><td align="center">Flume</td><td align="center">是一种分布式的日志收集框架</td></tr></tbody></table><p><img src="/img/assets/2024-11-17-10-32-02-image.png"></p><hr><h2 id="工具介绍"><a href="#工具介绍" class="headerlink" title="工具介绍"></a>工具介绍</h2><h3 id="Hadoop"><a href="#Hadoop" class="headerlink" title="Hadoop"></a>Hadoop</h3><blockquote><p>由<code>HDFS</code>和<code>Mapreduce</code>组成的大数据处理框架;</p><ul><li><p><code>HDFS</code>为海量的数据提供存储功能</p></li><li><p><code>MapReduce</code>为海量的数据提供计算功能</p></li></ul></blockquote><p><img src="/img/assets/hadoop.png"></p><h4 id="版本区别"><a href="#版本区别" class="headerlink" title="版本区别"></a>版本区别</h4><p><img title="" src="/img/assets/2024-11-17-16-02-31-image.png" alt="" width="350"><img title="" src="/img/assets/2024-11-17-16-01-50-image.png" alt="" width="267"></p><h4 id="组件的服务进程"><a href="#组件的服务进程" class="headerlink" title="组件的服务进程"></a>组件的服务进程</h4><h5 id="HDFS服务进程"><a href="#HDFS服务进程" class="headerlink" title="HDFS服务进程"></a>HDFS服务进程</h5><blockquote><p>工作结构式是:主从结构</p><p>即,主节点<code>NameNnode</code>,从节点<code>DataNode</code></p></blockquote><table><thead><tr><th align="center">NameNode</th><th align="center">DataNode</th><th align="center">Secondary NameNode</th></tr></thead><tbody><tr><td align="center">负责接收用户的操作请求、维护文件系统的目录结构、管理文件与<code>块(Block)</code>之间的关系,<code>块</code>与DataNode之间的关系</td><td align="center">负责存储文件;文件被分成<code>块</code>,存储在磁盘上</td><td align="center">辅助<code>NameNode</code>工作;用于备份元数据和恢复元数据</td></tr></tbody></table><h5 id="MapReduce和Yarn的服务进程"><a href="#MapReduce和Yarn的服务进程" class="headerlink" title="MapReduce和Yarn的服务进程"></a>MapReduce和Yarn的服务进程</h5><blockquote><p>同样,工作结构也是:主从结构</p><p>即,主节点<code>ResourceManager</code>,从节点<code>NodeManager</code></p></blockquote><table><thead><tr><th>ResourceManager</th><th>NodeManager</th></tr></thead><tbody><tr><td>负责接收客户提交的计算任务,然后把计算任务分配给<code>NodeManageer</code>执行,并监控其执行情况</td><td>复制执行<code>ResourceManager</code>分配的计算任务</td></tr></tbody></table><h4 id="优点"><a href="#优点" class="headerlink" title="优点"></a>优点</h4><table><thead><tr><th align="center"></th><th align="center">描述</th></tr></thead><tbody><tr><td align="center">可靠性</td><td align="center">使用<code>位</code>存储和处理数据</td></tr><tr><td align="center"><strong>高拓展性</strong></td><td align="center"><code>计算</code>是在可用的计算机集群之间分配数据并完成计算任务,集群可以无限拓展</td></tr><tr><td align="center"><strong>高效性</strong></td><td align="center">能在节点之间动态的移动数据,并保证各个节点的动态平衡</td></tr><tr><td align="center"><strong>高容错性</strong></td><td align="center">能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配</td></tr><tr><td align="center"><strong>低成本</strong></td><td align="center"><code>开源</code>软件,项目成本大大降低</td></tr></tbody></table><h3 id="Zookeeper"><a href="#Zookeeper" class="headerlink" title="Zookeeper"></a>Zookeeper</h3><blockquote><p>是Hadoop和HBase的重要组件;</p><p><mark>基于Hadoop集群</mark></p><p>目标:封装好那些复杂的、容易出错的关键服务,把<code>简单易用的接口</code>和<code>功能稳定、性能高效的系统</code>提供给用户</p></blockquote><h4 id="身份特性"><a href="#身份特性" class="headerlink" title="身份特性"></a>身份特性</h4><table><thead><tr><th align="center">Leader</th><th align="center">Follower</th><th align="center">Observer</th></tr></thead><tbody><tr><td align="center">负责客户端<code>写操作</code>的请求</td><td align="center">负责客户端<code>读操作</code>的请求;并参与<code>leader</code>的选举</td><td align="center">是特殊的<code>follower</code>,可以接收客户端<code>读操作</code>的请求,但不会参与选举</td></tr></tbody></table><h3 id="HBase"><a href="#HBase" class="headerlink" title="HBase"></a>HBase</h3><ul><li><p>使用此项技术,可以在廉价的<code>PC Server</code>上搭建起大规模数据存储的集群</p></li><li><p>位于<code>Hadoop</code>生态系统中<code>HDFS</code>的上层,依靠<code>MapReduce</code>进行资源管理;便于拓展集群</p></li><li><p><mark>需要在Hadoop和ZooKeeper的基础上工作,依赖ZooKeeper</mark></p></li></ul><blockquote><p>对于<code>HBase版本≥0.98.5</code>,需要在启动<code>HBase</code>之前,提前设置<code>JAVA_HOME</code>环境变量</p><p>对于<code>HBase版本<0.98.5</code>,<code>HBase</code>会检测<code>Java</code>的位置,若无<code>Java</code>有提示</p><ul><li><p>有严格JDK支持列表;需要根据HBase官网版本文档及JDK对应版本进行安装使用</p></li><li><p>如果基于<code>HDFS</code>平台的分布式模式安装,必须考虑<code>HBase</code>与<code>Hadoop</code>的兼容性</p></li></ul></blockquote><h4 id="功能"><a href="#功能" class="headerlink" title="功能"></a>功能</h4><table><thead><tr><th>Client</th><th>包含<code>HBase</code>的接口,维护着一些高速缓存;用于加快对<code>HBase</code>的访问</th></tr></thead><tbody><tr><td><strong>ZooKeeper</strong></td><td>实时监控<code>Region</code>和<code>Server</code>的状态;存储<code>HBase</code>的模式</td></tr><tr><td><strong>Master</strong></td><td>为<code>Region Server</code>分配<code>Region</code>;负责<code>Region Server</code>的负载均衡</td></tr><tr><td><strong>Region Server</strong></td><td>维护<code>Master</code>分配给它的<code>Region</code>,并处理这些<code>Region</code>的I/O请求;</td></tr></tbody></table><h4 id="运行模式"><a href="#运行模式" class="headerlink" title="运行模式"></a>运行模式</h4><table><thead><tr><th>独立模式(Standalone)<br>默认模式</th><th>分布式模式(Distributed)</th><th></th></tr></thead><tbody><tr><td></td><td><strong>伪分布模式</strong></td><td><strong>完全分布式模式</strong></td></tr><tr><td>使用本地文件系统,运行,在同一个JVM中所有HBase守护进程和本地ZooKeeper</td><td>守护进程运行在单个节点</td><td>守护进程运行在集群中的所有节点上</td></tr><tr><td></td><td>既可以在本地文件系统运行,也可以在HDFS上运行</td><td>只能在HDFS上运行</td></tr></tbody></table><h4 id="HDFS与HBase对比"><a href="#HDFS与HBase对比" class="headerlink" title="HDFS与HBase对比"></a>HDFS与HBase对比</h4><table><thead><tr><th align="center">HDFS</th><th align="center">HBase</th></tr></thead><tbody><tr><td align="center">更适合批处理场景</td><td align="center">更适合对数据进行随机读写、大量高并发应用、读写访问等非常简单的操作</td></tr><tr><td align="center">不支持数据随机查找、</td><td align="center">不适用于关系查询和计算</td></tr><tr><td align="center">不适合增量数据处理,不支持数据更新</td><td align="center"></td></tr></tbody></table><h3 id="Spark"><a href="#Spark" class="headerlink" title="Spark"></a>Spark</h3><blockquote><p>将<code>Stream</code>数据分成小的时间片段,以类似batch批量处理的方式来处理这小部分数据;</p></blockquote><ul><li><p>类<code>Hadoop MapReduce</code>的通用并行框架</p></li><li><p>启用内存分布数据集;即在内存上运行</p></li></ul><h4 id="性能优点"><a href="#性能优点" class="headerlink" title="性能优点"></a>性能优点</h4><table><thead><tr><th></th><th>描述</th></tr></thead><tbody><tr><td>有更快的运行速度</td><td>因:启用内存分布数据集</td></tr><tr><td><strong>易用性</strong></td><td>提供多种高级运算符</td></tr><tr><td><strong>通用性</strong></td><td>提供大量的库</td></tr><tr><td><strong>支持多种资源管理器</strong></td><td>支持第三方以及自带的独立集群管理器</td></tr><tr><td><strong>Shark</strong></td><td>提供和<code>Hive</code>一样的<code>HiveQL</code>命令接口,最大程度保持和<code>Hive</code>的兼容</td></tr><tr><td><strong>Spark R</strong></td><td>为R语言提供轻量级的Spark前端的R包;提供一个分布式的<code>data frame</code>数据结构</td></tr></tbody></table><h3 id="Hive"><a href="#Hive" class="headerlink" title="Hive"></a>Hive</h3><blockquote><p>环境:Java、Hadoop、MySQL</p></blockquote><ul><li><p>在<code>Hadoop</code>生态系统中<code>Hadoop</code>组件之上</p></li><li><p>基于<code>Hadoop</code>的数据仓库</p></li></ul><h4 id="运行模式-1"><a href="#运行模式-1" class="headerlink" title="运行模式"></a>运行模式</h4><table><thead><tr><th>嵌入模式</th><th>本地模式</th><th>远程模式</th></tr></thead><tbody><tr><td>元数据信息被存储在<code>Hive</code>自带的<code>Derby</code>数据库中,而且只允许创建一个连接</td><td>元数据信息被存储在<code>MySQL</code>中,<code>MySQL</code>与<code>Hive</code>运行在同一台物理计算机或服务器上</td><td>元数据信息被存储在<code>MySQL</code>中,<code>MySQL</code>与<code>Hive</code>运行在不同物理计算机或服务器上</td></tr><tr><td>用于测试</td><td>用户开发与测试</td><td>用于实际生产环境</td></tr></tbody></table><h4 id="数据仓库的两个方面"><a href="#数据仓库的两个方面" class="headerlink" title="数据仓库的两个方面"></a>数据仓库的两个方面</h4><table><thead><tr><th>面向主题的</th><th>集成的</th></tr></thead><tbody><tr><td>这是一个面向主题的、集成的、不可更新的、随时间而变化的数据集合<br>用于支持企业或组织的决策分析处理</td><td>仓库中的数据来自分散的操作型数据,包含规范化以及非规范化的数据;它将所需数据从原来的信息中抽取出来,进行加工与集成、统一与综合,保证仓库信息的一致性;</td></tr></tbody></table><h4 id="优点-1"><a href="#优点-1" class="headerlink" title="优点"></a>优点</h4><ol><li>学习成本低,开发灵活</li></ol><h4 id="缺点"><a href="#缺点" class="headerlink" title="缺点"></a>缺点</h4><ol><li><p>执行速度慢</p></li><li><p>不支持数据的更新、删除操作</p></li></ol><h3 id="MongoDB"><a href="#MongoDB" class="headerlink" title="MongoDB"></a>MongoDB</h3><ul><li><p>介于<code>关系数据库</code>与<code>非关系数据库</code>之间的产品</p></li><li><p><mark>首先要先配置好Hadoop集群服务,才配置MongoDB服务</mark></p></li><li><p>仅在<code>Hadoop</code>集群的主节点上配置<code>MongoDB</code></p></li></ul><h4 id="基本概念"><a href="#基本概念" class="headerlink" title="基本概念"></a>基本概念</h4><h5 id="文档"><a href="#文档" class="headerlink" title="文档"></a>文档</h5><blockquote><p>是<code>MongoDB</code>中数据的基本单位,类似关系型数据库中的<code>行</code>(但比<code>行</code>复杂)</p><p>多个键及其关联的值有序的放在一起就构成了文档</p></blockquote><h5 id="集合"><a href="#集合" class="headerlink" title="集合"></a>集合</h5><blockquote><p>就是一组文档,类似关系型数据库中的<code>表</code>;</p></blockquote><h5 id="数据库"><a href="#数据库" class="headerlink" title="数据库"></a>数据库</h5><blockquote><p>由多个文档组成集合,多个集合组成数据库</p></blockquote><h6 id="系统数据库"><a href="#系统数据库" class="headerlink" title="系统数据库"></a>系统数据库</h6><table><thead><tr><th align="center">Admin数据库</th><th align="center">Local数据库</th><th align="center">Config数据库</th></tr></thead><tbody><tr><td align="center">是一个权限数据库</td><td align="center">用于存储本地单台服务器的任意集合;不会被复制</td><td align="center">当使用分片模式时,用于保存分片的信息;仅在内部使用</td></tr></tbody></table><h5 id="数据模型"><a href="#数据模型" class="headerlink" title="数据模型"></a>数据模型</h5><blockquote><p>一个<code>MongoDB</code>实例可以包含一组数据库(Database)、一个数据库可以包含一组集合(Collection)、一个集合可以包含一组文档(Document)、一个文档可以包含一组字段(Field),每个字段都是一个键值对(Key/Value pair)</p></blockquote><h4 id="功能特性"><a href="#功能特性" class="headerlink" title="功能特性"></a>功能特性</h4><table><thead><tr><th>1. 面向集合存储,易存储对象类型的数据</th><th>7. 使用高效的二进制数据存储,包括大型对象<br>(如视频等)</th></tr></thead><tbody><tr><td>2. 模式自由</td><td>8. 自动处理碎片,以支持云计算层次的扩展性</td></tr><tr><td>3. 支持动态查询</td><td>9. 支持<code>Ruby</code>、<code>Python</code>、<code>Java</code>、<code>C++</code>、<code>PHP</code>、<code>C#</code>等多种语言</td></tr><tr><td>4. 支持完全索引</td><td>10. 文件存储格式为BSON(JSON文件的一种扩展)</td></tr><tr><td>5. 支持查询</td><td>11. 可通过网络访问</td></tr><tr><td>6. 支持复制和故障恢复</td><td></td></tr></tbody></table><h4 id="场景"><a href="#场景" class="headerlink" title="场景"></a>场景</h4><table><thead><tr><th>适用场景</th><th>不适用场景</th></tr></thead><tbody><tr><td>1. 网站实时数据处理</td><td>1. 要求高事务性的系统</td></tr><tr><td>2. 缓存</td><td>2. 传统的商业智能应用</td></tr><tr><td>3. 高伸缩性的场景</td><td>3. 复杂的跨文档(表)的级联查询</td></tr></tbody></table><h3 id="Kafka"><a href="#Kafka" class="headerlink" title="Kafka"></a>Kafka</h3><blockquote><p>是一个分布式消息队列</p><ul><li><p>必须首先配置<code>Hadoop</code>、<code>ZooKeeper</code>集群服务</p></li><li><p><mark>依赖ZooKeeper服务</mark></p></li></ul></blockquote><ul><li>具有高性能、持久化、多副本备份、横向扩展能力</li></ul><h4 id="基本概念-1"><a href="#基本概念-1" class="headerlink" title="基本概念"></a>基本概念</h4><h5 id="代理服务器"><a href="#代理服务器" class="headerlink" title="代理服务器"></a>代理服务器</h5><blockquote><p><code>Kafka</code>集群中包含一个或多个服务器,这种服务器被称为<code>代理服务器</code>(Broker)或<code>Kafka</code>集群</p><ul><li>已发布的消息会保存在一组服务器中</li></ul></blockquote><h5 id="话题(Topic)"><a href="#话题(Topic)" class="headerlink" title="话题(Topic)"></a>话题(Topic)</h5><blockquote><p>是消息的<code>分类名</code></p></blockquote><h5 id="分区(Partition)"><a href="#分区(Partition)" class="headerlink" title="分区(Partition)"></a>分区(Partition)</h5><blockquote><p>是物理上的概念;每个话题包含一个或多个分区</p></blockquote><h5 id="生产者(Producer)"><a href="#生产者(Producer)" class="headerlink" title="生产者(Producer)"></a>生产者(Producer)</h5><blockquote><p>能够发布消息到<code>Kafka Broker</code>的任何对象</p></blockquote><h5 id="消费者(Consumer)"><a href="#消费者(Consumer)" class="headerlink" title="消费者(Consumer)"></a>消费者(Consumer)</h5><blockquote><p>是从<code>Kafka Broker</code>读取消息的客户端;可以订阅一个或多个话题</p></blockquote><h5 id="消费者组群"><a href="#消费者组群" class="headerlink" title="消费者组群"></a>消费者组群</h5><blockquote><p>为消费者进行分类;每个消费者属于一个特定的消费者组群;</p></blockquote><h4 id="特性"><a href="#特性" class="headerlink" title="特性"></a>特性</h4><table><thead><tr><th>通过O(1)的磁盘数据结构提供消息的持久化</th></tr></thead><tbody><tr><td>高吞吐量</td></tr><tr><td>支持通过Kafka服务器和消费机集群来进行消息分区</td></tr><tr><td>支持Hadoop并行数据加载</td></tr></tbody></table><h3 id="Flume"><a href="#Flume" class="headerlink" title="Flume"></a>Flume</h3><ul><li>用于高效收集、聚合和移动大量且多数据源的日志数据</li></ul><h4 id="基本概念-2"><a href="#基本概念-2" class="headerlink" title="基本概念"></a>基本概念</h4><table><thead><tr><th align="center">客户端(Client)</th><th align="center">运行在一个独立的线程中,会产生数据</th></tr></thead><tbody><tr><td align="center">事件(Event)</td><td align="center">对数据的一种封装,是一个数据单元;是<code>Flume</code>中传输数据最基本的单元</td></tr><tr><td align="center">代理(Agent)</td><td align="center">是<code>Flume</code>运行的核心;是<code>Flume</code>中最小的独立运行单位</td></tr><tr><td align="center">数据源(Source)</td><td align="center">是数据的收集端;负责从客户端手机捕获数据并进行格式化,随后将数据封装到<code>事件</code>里,最后将<code>事件</code>放到一个或多个通道中</td></tr><tr><td align="center">通道(Channel)</td><td align="center">是中转事件的一个临时存储,保存由<code>Source</code>组件传递过来的<code>事件</code></td></tr><tr><td align="center">沉槽(Sink)</td><td align="center">从<code>通道</code>中取出<code>事件</code>,负责将<code>事件</code>传输到下一跳或最终目的地</td></tr><tr><td align="center">Flume数据流</td><td align="center"></td></tr></tbody></table><h4 id="可靠性"><a href="#可靠性" class="headerlink" title="可靠性"></a>可靠性</h4><blockquote><p>使用事务的方式保证整个传输事件过程的可靠性</p></blockquote><ol><li><p>当<code>事件</code>被存入<code>Channel</code>后、或者被传到下一个<code>代理</code>后、或者被存入外部目的地后、<code>Sink</code>才允许吧<code>事件</code>从<code>Channel</code>中删除掉</p></li><li><p>当节点出现故障时,日志能够被传输到其他节点上,不会丢失</p></li></ol><p>由弱到强的可靠性保障:Besteffort<sup id="fnref:1" class="footnote-ref"><a href="#fn:1" rel="footnote"><span class="hint--top hint--rounded" aria-label="数据发送到接收方后,不进行确认">[1]</span></a></sup> ——> Store on Failure<sup id="fnref:2" class="footnote-ref"><a href="#fn:2" rel="footnote"><span class="hint--top hint--rounded" aria-label="当数据接收方崩溃时,将数据写到本地,等带接收方恢复后,再继续发送">[2]</span></a></sup> ——> end-to-end<sup id="fnref:3" class="footnote-ref"><a href="#fn:3" rel="footnote"><span class="hint--top hint--rounded" aria-label="收到数据后,代理先将事件写到磁盘上,然后传送数据,传输成功后再删除数据;若失败,则重新发送">[3]</span></a></sup></p><h4 id="场景-1"><a href="#场景-1" class="headerlink" title="场景"></a>场景</h4><table><thead><tr><th>多个代理顺序连接</th><th>多个代理的数据汇聚到同一个代理</th><th>多级流</th></tr></thead><tbody><tr><td>可以将多个<code>Agent</code>顺序连接起来,将最初的数据源经过收集,存储到最终的存储系统中</td><td>将多个代理的数据汇聚到一个用来存储数据的存储系统</td><td>当多种日志流流入一个代理时,将混杂的日志流分开,为每种类型的日志建立一个自己的传输通道</td></tr></tbody></table><h3 id="Storm"><a href="#Storm" class="headerlink" title="Storm"></a>Storm</h3><blockquote><p>是一个分布式实时流式计算平台;</p><ul><li><p>必须首先配置<code>Hadoop</code>、<code>ZooKeeper</code>集群服务</p></li><li><p><mark>依赖ZooKeeper服务</mark></p></li><li><p>依靠<code>ZooKeeper</code>集群实现节点间的信息交换</p></li></ul></blockquote><h4 id="基本概念-3"><a href="#基本概念-3" class="headerlink" title="基本概念"></a>基本概念</h4><table><thead><tr><th>概念名</th><th>描述</th><th>作用</th></tr></thead><tbody><tr><td>Tuple</td><td>被处理的数据</td><td></td></tr><tr><td>Spout</td><td>数据源</td><td>一个<code>Topology</code>中的数据生产者</td></tr><tr><td>Bolt</td><td>数据操作</td><td>所有的数据处理都由<code>Bolt</code>完成</td></tr><tr><td>Task</td><td>运行于<code>Spout</code>或<code>Bolt</code>中的线程</td><td></td></tr><tr><td>Worker</td><td>运行<code>Task</code>线程的进程</td><td>具体处理组件逻辑的进程<br>负责实际的计算和网络通信</td></tr></tbody></table><h4 id="关键组件"><a href="#关键组件" class="headerlink" title="关键组件"></a>关键组件</h4><table><thead><tr><th>Topology</th><th>一个实时应用程序;<br>即各个组件间的消息流动形成逻辑上的一个拓扑结构</th></tr></thead><tbody><tr><td>Steam</td><td>以<code>Tuple</code>为单位组成的一条有向无界的数据流</td></tr><tr><td>Nimbus</td><td>负责管理<code>Supervisor</code>、调度<code>Topology</code></td></tr><tr><td>Supervisor</td><td>接收<code>Nimbus</code>发来的工作指派并基于要求运行工作进程</td></tr></tbody></table><h4 id="集群架构"><a href="#集群架构" class="headerlink" title="集群架构"></a>集群架构</h4><blockquote><p>采用主从架构</p><p>即,主节点<code>Nimbus</code>,从节点(工作节点)<code>Supervisor</code></p><ul><li>计算模型为<code>DAG</code>计算模型,<code>Spout</code>和<code>Bolt</code>节点在有向无环图李灵活组合构成<code>Stream</code>数据流,数据流以<code>Tuple</code>为基本的数据单元</li></ul></blockquote><h4 id="适用场景"><a href="#适用场景" class="headerlink" title="适用场景"></a>适用场景</h4><table><thead><tr><th>流数据处理</th><th>可以处理源源不断的消息</th></tr></thead><tbody><tr><td>连续计算</td><td>可以进行连续查询并把结果即时反馈给客户</td></tr><tr><td>分布式</td><td>处理延迟极低</td></tr><tr><td>机器学习</td><td></td></tr><tr><td>实时分析</td><td>数据在内存中处理</td></tr></tbody></table><h4 id="优点-2"><a href="#优点-2" class="headerlink" title="优点"></a>优点</h4><ol><li><p>常驻运行</p></li><li><p>流式处理(数据发一点处理一点)</p></li><li><p>实时处理(数据在内存中不写入磁盘)</p></li><li><p>DAG(Directed Acyclic Graph,有向无环图)模型</p></li></ol><h1 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h1><p>《云计算与大数据技术(Linux网络平台+虚拟化技术+Hadoop数据运维)》·邢丽</p><section class="footnotes"><div class="footnote-list"><ol><li><span id="fn:1" class="footnote-text"><span>数据发送到接收方后,不进行确认<a href="#fnref:1" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:2" class="footnote-text"><span>当数据接收方崩溃时,将数据写到本地,等带接收方恢复后,再继续发送<a href="#fnref:2" rev="footnote" class="footnote-backref"> ↩</a></span></span></li><li><span id="fn:3" class="footnote-text"><span>收到数据后,代理先将事件写到磁盘上,然后传送数据,传输成功后再删除数据;若失败,则重新发送<a href="#fnref:3" rev="footnote" class="footnote-backref"> ↩</a></span></span></li></ol></div></section>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>大数据</tag>
<tag>Hadoop</tag>
<tag>ZooKeeper</tag>
<tag>Kafka</tag>
<tag>Spark</tag>
<tag>Storm</tag>
<tag>HBase</tag>
</tags>
</entry>
<entry>
<title>bat批处理中for循环的应用</title>
<link href="/2024/11/08/bat%E6%89%B9%E5%A4%84%E7%90%86%E4%B8%ADfor%E5%BE%AA%E7%8E%AF%E7%9A%84%E5%BA%94%E7%94%A8/"/>
<url>/2024/11/08/bat%E6%89%B9%E5%A4%84%E7%90%86%E4%B8%ADfor%E5%BE%AA%E7%8E%AF%E7%9A%84%E5%BA%94%E7%94%A8/</url>
<content type="html"><![CDATA[<h1 id="打开cmd"><a href="#打开cmd" class="headerlink" title="打开cmd"></a>打开cmd</h1><blockquote><p>for /l:即for循环以增量形式运行<br>%a:即a是变量<br>(0,2,10):初始值是0,增量是2,终止值是10</p></blockquote><h2 id="windows下批量复制文件"><a href="#windows下批量复制文件" class="headerlink" title="windows下批量复制文件"></a>windows下批量复制文件</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs batch">for /l %a in (0,2,10) do copy 源文件 目的文件%a <br><br></code></pre></td></tr></table></figure><h2 id="批量更改名字"><a href="#批量更改名字" class="headerlink" title="批量更改名字"></a>批量更改名字</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs batch">for /l %a (1,1,10) do move 源文件 目的文件%a<br></code></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs batch">for /l %a (1.1.10) do ren 源文件 目的文件%a<br></code></pre></td></tr></table></figure><h2 id="windows-创建目录"><a href="#windows-创建目录" class="headerlink" title="windows 创建目录"></a>windows 创建目录</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs batch">md 目录名<br></code></pre></td></tr></table></figure>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>Windows</tag>
</tags>
</entry>
<entry>
<title>Openeular(20.03-LTS)安装《Discuz!论坛》</title>
<link href="/2024/11/03/Openeular(20.03LTS)%E5%AE%89%E8%A3%85%E3%80%8ADiscuz!%E8%AE%BA%E5%9D%9B%E3%80%8B/"/>
<url>/2024/11/03/Openeular(20.03LTS)%E5%AE%89%E8%A3%85%E3%80%8ADiscuz!%E8%AE%BA%E5%9D%9B%E3%80%8B/</url>
<content type="html"><![CDATA[<h1 id="Openeular-20-03-LTS-安装《Discuz-论坛》"><a href="#Openeular-20-03-LTS-安装《Discuz-论坛》" class="headerlink" title="Openeular(20.03-LTS)安装《Discuz!论坛》"></a>Openeular(20.03-LTS)安装《Discuz!论坛》</h1><h2 id="1-设置主机名"><a href="#1-设置主机名" class="headerlink" title="1. 设置主机名"></a>1. 设置主机名</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs shell">hostnamectl set-hostname xxx && exit<br></code></pre></td></tr></table></figure><h2 id="2-设置静态IP地址"><a href="#2-设置静态IP地址" class="headerlink" title="2. 设置静态IP地址"></a>2. 设置静态IP地址</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell">cd /etc/sysconfig/network-scripts && ls<br><span class="hljs-meta prompt_"># </span><span class="language-bash">会显示类似如下的文件名</span><br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">[root@openeular network-scripts]# <span class="hljs-built_in">ls</span></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">ifcfg-有线连接 ifcfg-ens18</span><br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看拥有的网卡</span><br>ip address<br><span class="hljs-meta prompt_"># </span><span class="language-bash">添加新加网卡的配置文件,根据自己的情况填写对应的ens数字</span><br>nmcli connection add type ethernet ifname ens19 con-name ens19<br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看新加的配置文件,并修改为静态IP地址</span><br>ls <br>vi ifcfg-ens19<br><span class="hljs-meta prompt_"># </span><span class="language-bash">根据自己情况修改内容</span><br>BOOTPROTO=dhcp -> BOOTPROTO=static # 将网卡的启动协议变为静态设置IP地址<br><span class="hljs-meta prompt_"># </span><span class="language-bash">需要再文件最后添加的内容</span><br>IPADDR=192.168.66.11 # 静态设置的IP地址<br>NETMASK=255.255.255.0 # 设置IP地址的子网掩码<br><span class="hljs-meta prompt_"># </span><span class="language-bash">写完,保存退出</span><br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">开启并查看网卡</span><br>nmcli connection up ens19 && nmcli connection show <br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看网卡配置</span><br>ip address<br><span class="hljs-meta prompt_"># </span><span class="language-bash">测试正常上网功能</span><br>ping www.baidu.com<br></code></pre></td></tr></table></figure><h2 id="3-安装vim以及解压缩软件"><a href="#3-安装vim以及解压缩软件" class="headerlink" title="3. 安装vim以及解压缩软件"></a>3. 安装vim以及解压缩软件</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs shell">yum install -y vim unzip<br></code></pre></td></tr></table></figure><h2 id="4-关闭系统防火墙"><a href="#4-关闭系统防火墙" class="headerlink" title="4. 关闭系统防火墙"></a>4. 关闭系统防火墙</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看防火墙状态</span><br>systemctl status firewalld<br><span class="hljs-meta prompt_"># </span><span class="language-bash">关闭防火墙</span><br>systemctl stop firewalld<br><span class="hljs-meta prompt_"># </span><span class="language-bash">禁止防火墙开机自启动</span><br>systemctl disable firewalld<br><span class="hljs-meta prompt_"># </span><span class="language-bash">再次查看防火墙状态是否关闭</span><br>systemctl status firewalld<br></code></pre></td></tr></table></figure><h2 id="5-关闭Selinux【Linux安全内核功能】"><a href="#5-关闭Selinux【Linux安全内核功能】" class="headerlink" title="5. 关闭Selinux【Linux安全内核功能】"></a>5. 关闭Selinux【Linux安全内核功能】</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看selinux状态</span><br>getenforce<br><span class="hljs-meta prompt_"># </span><span class="language-bash">不关闭会打印出以下内容;</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">Enforcing</span><br>cd /etc/selinux && vi config<br>将 SELINUX=enforcing 改为 ---> SELINUX=disabled<br><span class="hljs-meta prompt_"># </span><span class="language-bash">重启主机后,再次查看selinux状态</span><br>getenforce<br><span class="hljs-meta prompt_"># </span><span class="language-bash">此时,打印出以下内容</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">Disabled</span><br></code></pre></td></tr></table></figure><h2 id="6-安装并配置LAMP环境【Linux,Apache,Mysql,PHP(JAVA环境)】"><a href="#6-安装并配置LAMP环境【Linux,Apache,Mysql,PHP(JAVA环境)】" class="headerlink" title="6. 安装并配置LAMP环境【Linux,Apache,Mysql,PHP(JAVA环境)】"></a>6. 安装并配置LAMP环境【Linux,Apache,Mysql,PHP(JAVA环境)】</h2><h3 id="6-1-安装并配置Apache服务"><a href="#6-1-安装并配置Apache服务" class="headerlink" title="6.1 安装并配置Apache服务"></a>6.1 安装并配置Apache服务</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">安装Apache服务</span><br>yum install -y httpd<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">开启httpd服务</span><br>systemctl start httpd<br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看httpd服务状态</span><br>systemctl status htpd<br><span class="hljs-meta prompt_"># </span><span class="language-bash">让httpd服务开机自启</span><br>systemctl enable httpd<br></code></pre></td></tr></table></figure><h3 id="6-2-安装并配置PHP服务"><a href="#6-2-安装并配置PHP服务" class="headerlink" title="6.2 安装并配置PHP服务"></a>6.2 安装并配置PHP服务</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">安装PHP以及PHP函数拓展服务</span><br>yum install -y php php-mysqlnd php-xml php-json<br></code></pre></td></tr></table></figure><h3 id="6-3-安装并配置Mysql数据库服务"><a href="#6-3-安装并配置Mysql数据库服务" class="headerlink" title="6.3 安装并配置Mysql数据库服务"></a>6.3 安装并配置Mysql数据库服务</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">安装mysql数据库服务</span><br>yum install -y mysql-server<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">开启数据库服务</span><br>systemctl start mysqld<br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看数据库服务状态</span><br>systemctl status mysqld<br><span class="hljs-meta prompt_"># </span><span class="language-bash">让数据库服务开机自启</span><br>systemctl enable mysqld<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">首次登录数据库</span><br>mysql -v<br><span class="hljs-meta prompt_"># </span><span class="language-bash">修改root密码,密码是”BY“后面单引号中间的内容,随意填写,需要自己记得住</span><br>ALTER USER 'root'@'localhost' IDENTIFIED BY 'Huawei@123!';<br><span class="hljs-meta prompt_"># </span><span class="language-bash">退出数据库</span><br>exit<br></code></pre></td></tr></table></figure><h2 id="7-将Discuz论坛的压缩包上传至-var-www-html-这个文件夹内"><a href="#7-将Discuz论坛的压缩包上传至-var-www-html-这个文件夹内" class="headerlink" title="7. 将Discuz论坛的压缩包上传至/var/www/html/这个文件夹内"></a>7. 将Discuz论坛的压缩包上传至/var/www/html/这个文件夹内</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">通过XFTP这个工具上传</span><br></code></pre></td></tr></table></figure><h2 id="8-解压Discuz论坛的压缩包,并赋予权限"><a href="#8-解压Discuz论坛的压缩包,并赋予权限" class="headerlink" title="8. 解压Discuz论坛的压缩包,并赋予权限"></a>8. 解压Discuz论坛的压缩包,并赋予权限</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">将Discuz论坛压缩包,解压到/mnt文件夹下</span><br>unzip -d /mnt /root/Discuz_X3.5_SC_UTF8_20240520.zip<br><span class="hljs-meta prompt_"># </span><span class="language-bash">进入/mnt文件夹,并将“upload”中所有的文件,复制到”/var/www/html“这个目录下</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash"><span class="hljs-string">"upload"</span>这个文件夹中的内容,就是Discuz论坛的资源文件</span><br>cd /mnt<br>cp -R upload/* /var/www/html/<br><span class="hljs-meta prompt_"># </span><span class="language-bash">将“/var/www/html”这个目录下所有文件的写入权限赋予给其他人</span><br>chmod -R 777 /var/www/html<br></code></pre></td></tr></table></figure><h2 id="9-重启httpd服务"><a href="#9-重启httpd服务" class="headerlink" title="9. 重启httpd服务"></a>9. 重启httpd服务</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">重启httpd服务</span><br>systemctl restart httpd<br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看httpd服务的状态</span><br>systemctl status httpd<br></code></pre></td></tr></table></figure><h2 id="10-配置Discuz论坛"><a href="#10-配置Discuz论坛" class="headerlink" title="10. 配置Discuz论坛"></a>10. 配置Discuz论坛</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs shell">访问 ”http://IP地址/install“<br></code></pre></td></tr></table></figure><ul><li>此处的三个项,必须都是绿色勾,下一步</li></ul><img src="/img/assets/2024-11-03-00-45-57-image.png" title="" alt="" data-align="inline"><ul><li>选择仅安装Discuz论坛</li></ul><p><img src="/img/assets/2024-11-03-00-46-32-image.png"></p><h2 id="11-登录并创建Discuz数据库"><a href="#11-登录并创建Discuz数据库" class="headerlink" title="11. 登录并创建Discuz数据库"></a>11. 登录并创建Discuz数据库</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">登录mysql数据库,使用root账户,使用密码登录</span><br>mysql -u root -p # 敲回车后输入你刚刚设置的root密码,密码不会显示出来<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看当前所有的数据库</span><br>show databases;<br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建数据库</span><br>create database discuz;<br><span class="hljs-meta prompt_"># </span><span class="language-bash">查看创建后所有的数据库</span><br>show databases;<br><span class="hljs-meta prompt_"># </span><span class="language-bash">创建论坛用户“Discuz”并附带账户密码,“BY”后面单引号中的内容就是密码</span><br>CREATE USER 'Discuz'@'%' IDENTIFIED BY '123456';<br><span class="hljs-meta prompt_"># </span><span class="language-bash">授予账户访问权限</span><br>GRANT ALL PRIVILEGES ON *.* TO 'Discuz'@'%';<br><span class="hljs-meta prompt_"># </span><span class="language-bash">刷新权限</span><br>FLUSH PRIVILEGES;<br></code></pre></td></tr></table></figure><h2 id="12-填写主机IP,以及刚刚创建的数据库,数据库用户名,数据库密码"><a href="#12-填写主机IP,以及刚刚创建的数据库,数据库用户名,数据库密码" class="headerlink" title="12. 填写主机IP,以及刚刚创建的数据库,数据库用户名,数据库密码"></a>12. 填写主机IP,以及刚刚创建的数据库,数据库用户名,数据库密码</h2><p><img src="/img/assets/2024-11-03-00-55-41-image.png"></p><h2 id="13-填写论坛web的“admin管理员”密码"><a href="#13-填写论坛web的“admin管理员”密码" class="headerlink" title="13. 填写论坛web的“admin管理员”密码"></a>13. 填写论坛web的“admin管理员”密码</h2><p><img src="/img/assets/2024-11-03-00-56-26-image.png"></p><h2 id="14-注册用户"><a href="#14-注册用户" class="headerlink" title="14. 注册用户"></a>14. 注册用户</h2><p><img src="/img/assets/2024-11-03-00-58-17-image.png"></p>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>Linux</tag>
</tags>
</entry>
<entry>
<title>流氓之搜狗输入法</title>
<link href="/2024/11/03/%E6%B5%81%E6%B0%93%E4%B9%8B%E6%90%9C%E7%8B%97%E8%BE%93%E5%85%A5%E6%B3%95/"/>
<url>/2024/11/03/%E6%B5%81%E6%B0%93%E4%B9%8B%E6%90%9C%E7%8B%97%E8%BE%93%E5%85%A5%E6%B3%95/</url>
<content type="html"><![CDATA[<h2 id="问题:"><a href="#问题:" class="headerlink" title="问题:"></a>问题:</h2><p>右键回收站的时候,会出现一个“彻底粉碎文件”的东西出现在列表中</p><p><img src="/img/assets/3057343520.png"></p><h1 id="搜狗输入法会在后台偷偷安装一个名为磁盘管理的应用,都是流氓,你怎么这么流氓,比流氓还流氓!!!!"><a href="#搜狗输入法会在后台偷偷安装一个名为磁盘管理的应用,都是流氓,你怎么这么流氓,比流氓还流氓!!!!" class="headerlink" title="搜狗输入法会在后台偷偷安装一个名为磁盘管理的应用,都是流氓,你怎么这么流氓,比流氓还流氓!!!!"></a>搜狗输入法会在后台偷偷安装一个名为磁盘管理的应用,都是流氓,你怎么这么流氓,比流氓还流氓!!!!</h1><h2 id="删除以及完全清除"><a href="#删除以及完全清除" class="headerlink" title="删除以及完全清除"></a>删除以及完全清除</h2><p>该软件的安装路径为:“用户文件夹\AppData\Local\kdiskmgr_sogou”,如下图所示</p><p><img src="/img/assets/435009471.png"></p><p>运行“uninstall.exe”卸载后,将“kdiskmgr_sogou”这个文件夹强制删除</p><hr><h1 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h1><p><a href="https://blog.csdn.net/DearPhotographer/article/details/143212705">https://blog.csdn.net/DearPhotographer/article/details/143212705</a></p>]]></content>
<categories>
<category>工具</category>
</categories>
<tags>
<tag>输入法</tag>
</tags>
</entry>
<entry>
<title>SSHpass工具</title>
<link href="/2024/11/01/SSHpass%E5%B7%A5%E5%85%B7/"/>
<url>/2024/11/01/SSHpass%E5%B7%A5%E5%85%B7/</url>
<content type="html"><![CDATA[<figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs shell">sshpass -p '123456' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt [email protected] "exit" &<br></code></pre></td></tr></table></figure><h1 id="命令参数解释"><a href="#命令参数解释" class="headerlink" title="命令参数解释"></a>命令参数解释</h1><p><code>sshpass -p</code>:这是将ssh密码作为参数传递给ssh命令,免去手动输入ssh密码的麻烦;</p><p><code>ssh</code>:这是用来安全地访问远程服务器的命令;</p><p><code>-o StrictHostKeyChecking=no</code>:这个选项告诉SSH在连接到新的或未知的主机时,不需要进行严格的主机密钥检查。这意味着SSH不会在<code>~/.ssh/known_hosts</code>文件中检查远程主机的公钥,并且不会提示用户确认是否信任该主机。这可以提高自动化脚本的灵活性,但会降低安全性,因为它使SSH连接更容易受到中间人攻击;</p><p><code>-o UserKnownHostsFile=/dev/null</code>:这个选项指定了SSH用于存储已知主机密钥的文件。在这个例子中,它被设置为/dev/null,这意味着所有已知的主机信息都会被丢弃,SSH不会存储任何关于连接过的主机的信息。这进一步降低了安全性,因为它消除了主机密钥验证的任何痕迹;</p><p><code>-tt</code>:这个选项强制SSH分配一个伪终端。即使执行的命令是非交互式的(如本例中的exit命令),也会分配伪终端。这在某些情况下很有用,例如确保远程命令的执行环境与交互式登录相似;</p><p><a href="mailto:user@example.com">user@example.com</a>:这是你想要连接的远程主机的用户名和地址;</p><p><code>"exit"</code>:这是在远程主机上执行的命令。在这个例子中,命令是exit,它将立即结束会话;</p><p><code>&</code>:这个符号将SSH命令放入后台执行。这意味着你可以在本地机器上继续工作,而不必等待SSH会话结束</p>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>Linux</tag>
</tags>
</entry>
<entry>
<title>一键脚本安装OpenStack单机(RDO版)</title>
<link href="/2024/10/31/%E4%B8%80%E9%94%AE%E8%84%9A%E6%9C%AC%E5%AE%89%E8%A3%85OpenStack%E5%8D%95%E6%9C%BA%EF%BC%88RDO%E7%89%88%EF%BC%89/"/>
<url>/2024/10/31/%E4%B8%80%E9%94%AE%E8%84%9A%E6%9C%AC%E5%AE%89%E8%A3%85OpenStack%E5%8D%95%E6%9C%BA%EF%BC%88RDO%E7%89%88%EF%BC%89/</url>
<content type="html"><![CDATA[<h1 id="一键脚本安装OpenStack单机(RDO版)"><a href="#一键脚本安装OpenStack单机(RDO版)" class="headerlink" title="一键脚本安装OpenStack单机(RDO版)"></a>一键脚本安装OpenStack单机(RDO版)</h1><h2 id="部署环境"><a href="#部署环境" class="headerlink" title="部署环境"></a>部署环境</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs bash">centos7.9 镜像获取地址:<br>https://mirrors.ustc.edu.cn/centos-vault/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso<br><br>准备资料:<br>OpenStack 官方文档:https://docs.openstack.org/install-guide/<br><br>阿里云 yum 源设置官方文档:<br>https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11Jpkdzb<br><br>注意:因服务较多,内存建议设置8GB及以上<br></code></pre></td></tr></table></figure><h2 id="开始部署"><a href="#开始部署" class="headerlink" title="开始部署"></a>开始部署</h2><h3 id="1-修改系统的主机名"><a href="#1-修改系统的主机名" class="headerlink" title="1. 修改系统的主机名"></a>1. 修改系统的主机名</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 修改系统主机名为 openstack</span><br>hostnamectl set-hostname openstack<br></code></pre></td></tr></table></figure><h3 id="2-配置静态Ip地址"><a href="#2-配置静态Ip地址" class="headerlink" title="2. 配置静态Ip地址"></a>2. 配置静态Ip地址</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 编辑网卡配置文件</span><br>vi /etc/sysconfig/network-scripts/ifcfg-ens33<br><span class="hljs-comment"># 注意自己网卡的配置文件名!!!!</span><br><br>TYPE=<span class="hljs-string">"Ethernet"</span> <span class="hljs-comment"># 网卡类型:以太网</span><br>BOOTPROTO=<span class="hljs-string">"static"</span> <span class="hljs-comment"># 设置网卡获得ip地址的方式(static|dhcp|none|bootp)</span><br>DEFROUTE=<span class="hljs-built_in">yes</span> <span class="hljs-comment"># 设置为默认路由(yes|no)</span><br>DEVICE=<span class="hljs-string">"ens33"</span> <span class="hljs-comment"># 网卡设备名称</span><br>ONBOOT=<span class="hljs-string">"yes"</span> <span class="hljs-comment"># 开机自启(yes|no)</span><br>IPADDR=192.168.66.6 <span class="hljs-comment"># IP地址</span><br>PREFIX=24 <span class="hljs-comment"># 子网掩码,也可以写成 NETMASK=255.255.255.0</span><br>GATEWAY=192.168.66.254 <span class="hljs-comment"># 网关</span><br>DNS1=223.5.5.5 <span class="hljs-comment"># 首选DNS,这里选择的是阿里的DNS</span><br><br><span class="hljs-comment"># 重启网络服务</span><br>systemctl restart network<br><br><span class="hljs-comment"># 验证IP地址</span><br>ip addr<br></code></pre></td></tr></table></figure><h3 id="3-添加主机hosts记录"><a href="#3-添加主机hosts记录" class="headerlink" title="3. 添加主机hosts记录"></a>3. 添加主机hosts记录</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 添加主机hosts记录</span><br><span class="hljs-built_in">echo</span> <span class="hljs-string">"192.168.66.6 openstack"</span> >> /etc/hosts<br><br><span class="hljs-comment"># 验证修改结果</span><br>ping openstack<br><br><br></code></pre></td></tr></table></figure><h3 id="4-设置本机SSH免密登录"><a href="#4-设置本机SSH免密登录" class="headerlink" title="4. 设置本机SSH免密登录"></a>4. 设置本机SSH免密登录</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 生成ssh密钥</span><br>ssh-keygen -t ed25519 -P <span class="hljs-string">""</span><br><br><span class="hljs-comment"># 添加密钥信息到~./ssh/know_hosts文件</span><br>ssh-copy-id root@openstack<br></code></pre></td></tr></table></figure><h3 id="5-关闭服务"><a href="#5-关闭服务" class="headerlink" title="5. 关闭服务"></a>5. 关闭服务</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 1. 关闭防火墙并禁止防火墙开机自启动</span><br>systemctl stop firewalld && systemctl <span class="hljs-built_in">disable</span> firewalld<br><span class="hljs-comment"># 查看防火墙状态</span><br>systemctl status firewalld<br><br><span class="hljs-comment"># 2. 关闭SeLinux</span><br><span class="hljs-comment"># 临时关闭Selinux</span><br>setenforce 0<br><span class="hljs-comment"># 永久关闭Selinux</span><br>sed -i <span class="hljs-string">'s|SELINUX=enforcing|SELINUX=disabled|'</span> /etc/selinux/config<br><br><span class="hljs-comment"># 3. 关闭NetworkManager服务并禁止该服务开机自启动</span><br>systemctl stop NetworkManager && systemctl <span class="hljs-built_in">disable</span> NetworkManager<br><span class="hljs-comment"># 查看NetworkManager状态</span><br>systemctl status NetworkManager<br></code></pre></td></tr></table></figure><h3 id="6-安装常用软件"><a href="#6-安装常用软件" class="headerlink" title="6. 安装常用软件"></a>6. 安装常用软件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">yum install vim bash-completion yum-utils -y<br></code></pre></td></tr></table></figure><h3 id="7-安装openstack-Stein的yum库"><a href="#7-安装openstack-Stein的yum库" class="headerlink" title="7. 安装openstack Stein的yum库"></a>7. 安装openstack Stein的yum库</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 安装基于Centos的Openstack工具包</span><br>yum install centos-release-openstack-stein -y <br><br><span class="hljs-comment"># 对原本的yum源进行备份</span><br><span class="hljs-built_in">cd</span> /etc/yum.repos.d/ && <span class="hljs-built_in">mkdir</span> bak && <span class="hljs-built_in">mv</span> * bak<br><br><span class="hljs-comment"># 添加阿里云的yum源,进行下载加速</span><br>wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo<br><br><span class="hljs-comment"># 要是上面的wget命令不能使用,则使用下面这一条</span><br>curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo<br><br><span class="hljs-comment"># 添加OpenStack的国内yum源,进行下载加速</span><br><span class="hljs-built_in">cat</span> >> /etc/yum.repos.d/CentOS-OpenStack-stein.repo << <span class="hljs-string">EOF</span><br><span class="hljs-string">[centos-openstack-stein]</span><br><span class="hljs-string">baseurl=http://mirrors.aliyun.com/$contentdir/$releasever/cloud/$basearch/openstack-stein/</span><br><span class="hljs-string"># mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=cloud-openstack-stein</span><br><span class="hljs-string">EOF</span><br><br><span class="hljs-comment"># 清除本地yum索引缓存,然后再重建索引缓存</span><br>yum clean all && yum makecache <br></code></pre></td></tr></table></figure><h3 id="8-安装packstack工具"><a href="#8-安装packstack工具" class="headerlink" title="8. 安装packstack工具"></a>8. 安装packstack工具</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">yum install openstack-packstack -y <br></code></pre></td></tr></table></figure><h3 id="9-安装openStack-allinone"><a href="#9-安装openStack-allinone" class="headerlink" title="9. 安装openStack allinone"></a>9. 安装openStack allinone</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 启动packstack一键安装配置</span><br>packstack --allinone<br><br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># ------以下是输入上述命令后显示的安装过程,根据报错信息,修改对应配置-------</span><br>Welcome to the Packstack setup utility<br><br>The installation <span class="hljs-built_in">log</span> file is available at: /var/tmp/packstack/20230727-071818-k1kmMw/openstack-setup.log<br><br>Installing:<br>Clean Up [ DONE ]<br>Discovering ip protocol version [ DONE ]<br>Setting up ssh keys [ DONE ]<br>Preparing servers [ DONE ]<br>Pre installing Puppet and discovering hosts<span class="hljs-string">' details [ DONE ]</span><br><span class="hljs-string">Preparing pre-install entries [ DONE ]</span><br><span class="hljs-string">Setting up CACERT [ DONE ]</span><br><span class="hljs-string">Preparing AMQP entries [ DONE ]</span><br><span class="hljs-string">Preparing MariaDB entries [ DONE ]</span><br><span class="hljs-string">Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]</span><br><span class="hljs-string">Preparing Keystone entries [ DONE ]</span><br><span class="hljs-string">Preparing Glance entries [ DONE ]</span><br><span class="hljs-string">Checking if the Cinder server has a cinder-volumes vg[ DONE ]</span><br><span class="hljs-string">Preparing Cinder entries [ DONE ]</span><br><span class="hljs-string">Preparing Nova API entries [ DONE ]</span><br><span class="hljs-string">Creating ssh keys for Nova migration [ DONE ]</span><br><span class="hljs-string">Gathering ssh host keys for Nova migration [ DONE ]</span><br><span class="hljs-string">Preparing Nova Compute entries [ DONE ]</span><br><span class="hljs-string">Preparing Nova Scheduler entries [ DONE ]</span><br><span class="hljs-string">Preparing Nova VNC Proxy entries [ DONE ]</span><br><span class="hljs-string">Preparing OpenStack Network-related Nova entries [ DONE ]</span><br><span class="hljs-string">Preparing Nova Common entries [ DONE ]</span><br><span class="hljs-string">Preparing Neutron LBaaS Agent entries [ DONE ]</span><br><span class="hljs-string">Preparing Neutron API entries [ DONE ]</span><br><span class="hljs-string">Preparing Neutron L3 entries [ DONE ]</span><br><span class="hljs-string">Preparing Neutron L2 Agent entries [ DONE ]</span><br><span class="hljs-string">Preparing Neutron DHCP Agent entries [ DONE ]</span><br><span class="hljs-string">Preparing Neutron Metering Agent entries [ DONE ]</span><br><span class="hljs-string">Checking if NetworkManager is enabled and running [ DONE ]</span><br><span class="hljs-string">Preparing OpenStack Client entries [ DONE ]</span><br><span class="hljs-string">Preparing Horizon entries [ DONE ]</span><br><span class="hljs-string">Preparing Swift builder entries [ DONE ]</span><br><span class="hljs-string">Preparing Swift proxy entries [ DONE ]</span><br><span class="hljs-string">Preparing Swift storage entries [ DONE ]</span><br><span class="hljs-string">Preparing Gnocchi entries [ DONE ]</span><br><span class="hljs-string">Preparing Redis entries [ DONE ]</span><br><span class="hljs-string">Preparing Ceilometer entries [ DONE ]</span><br><span class="hljs-string">Preparing Aodh entries [ DONE ]</span><br><span class="hljs-string">Preparing Puppet manifests [ DONE ]</span><br><span class="hljs-string">Copying Puppet modules and manifests [ DONE ]</span><br><span class="hljs-string">Applying 192.168.100.49_controller.pp</span><br><span class="hljs-string">192.168.100.49_controller.pp: [ DONE ] </span><br><span class="hljs-string">Applying 192.168.100.49_network.pp</span><br><span class="hljs-string">192.168.100.49_network.pp: [ DONE ] </span><br><span class="hljs-string">Applying 192.168.100.49_compute.pp</span><br><span class="hljs-string">192.168.100.49_compute.pp: [ DONE ] </span><br><span class="hljs-string">Applying Puppet manifests [ DONE ]</span><br><span class="hljs-string">Finalizing [ DONE ]</span><br><span class="hljs-string"></span><br><span class="hljs-string"># ----------------------------------------------------------------</span><br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 自动化安装时间很长,静静等待(20-30分钟),直到出现如下信息,表示成功安装。</span><br><br> **** Installation completed successfully ******<br><br>Additional information:<br> * Parameter CONFIG_NEUTRON_L2_AGENT: You have choosen OVN neutron backend. Note that this backend does not support LBaaS, VPNaaS or FWaaS services. Geneve will be used as encapsulation method <span class="hljs-keyword">for</span> tenant networks<br> * A new answerfile was created <span class="hljs-keyword">in</span>: /root/packstack-answers-20230727-071819.txt<br> * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem <span class="hljs-keyword">for</span> some OpenStack components.<br> * File /root/keystonerc_admin has been created on OpenStack client host 192.168.100.49. To use the <span class="hljs-built_in">command</span> line tools you need to <span class="hljs-built_in">source</span> the file.<br> * To access the OpenStack Dashboard browse to http://192.168.66.6/dashboard .<br>Please, find your login credentials stored <span class="hljs-keyword">in</span> the keystonerc_admin <span class="hljs-keyword">in</span> your home directory.<br> * The installation <span class="hljs-built_in">log</span> file is available at: /var/tmp/packstack/20230727-071818-k1kmMw/openstack-setup.log<br> * The generated manifests are available at: /var/tmp/packstack/20230727-071818-k1kmMw/manifests<br><span class="hljs-comment"># -----------------------------------------------------------</span><br></code></pre></td></tr></table></figure><h2 id="部署结束"><a href="#部署结束" class="headerlink" title="部署结束"></a>部署结束</h2><h3 id="10-web登录"><a href="#10-web登录" class="headerlink" title="10. web登录"></a>10. web登录</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">查看生成的管理员配置文件</span><br>cat keystonerc_admin <br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">-----------以下是文件显示的内容---------------</span><br>unset OS_SERVICE_TOKEN<br> export OS_USERNAME=admin<br> export OS_PASSWORD='fd8305e89a47450c'<br> export OS_REGION_NAME=RegionOne<br> export OS_AUTH_URL=http://192.168.66.6:5000/v3<br> export PS1='[\u@\h \W(keystone_admin)]\$ '<br><br>export OS_PROJECT_NAME=admin<br>export OS_USER_DOMAIN_NAME=Default<br>export OS_PROJECT_DOMAIN_NAME=Default<br>export OS_IDENTITY_API_VERSION=3<br><span class="hljs-meta prompt_"># </span><span class="language-bash">-----------文件显示内容结束--------------------</span><br><br>Dashboard的网页登录界面;使用浏览器打开:http://{your IP}/dashboard/<br></code></pre></td></tr></table></figure><h1 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h1><ol><li><a href="https://www.bookstack.cn/read/deployopenstackwithpuppet/Introduction-read_guide.md">正确的阅读姿势 - 《深入理解 OpenStack 自动化部署》 - 书栈网 · BookStack</a></li></ol>]]></content>
<categories>
<category>服务器</category>
<category>云计算</category>
</categories>
<tags>
<tag>Linux</tag>
<tag>OpenStack</tag>
</tags>
</entry>
<entry>
<title>Linux系统使用代理</title>
<link href="/2024/10/28/Linux%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8%E4%BB%A3%E7%90%86/"/>
<url>/2024/10/28/Linux%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8%E4%BB%A3%E7%90%86/</url>
<content type="html"><![CDATA[<h1 id="Linux系统使用代理"><a href="#Linux系统使用代理" class="headerlink" title="Linux系统使用代理"></a>Linux系统使用代理</h1><hr><h2 id="全局使用代理"><a href="#全局使用代理" class="headerlink" title="全局使用代理"></a>全局使用代理</h2><h3 id="代理变量的分类"><a href="#代理变量的分类" class="headerlink" title="代理变量的分类"></a>代理变量的分类</h3><table><thead><tr><th>环境变量</th><th>描述</th><th>示例</th></tr></thead><tbody><tr><td>http_proxy</td><td>为http变量设置代理;默认不填开头以http协议传输</td><td><a href="http://10.0.0.51:8080/">http://10.0.0.51:8080</a> <a href="http://user:[email protected]:8080/">http://user:[email protected]:8080</a> socks4://10.0.0.51:1080 socks5://192.168.1.1:1080</td></tr><tr><td>https_proxy</td><td>为https变量设置代理;</td><td>同上</td></tr><tr><td>ftp_proxy</td><td>为ftp变量设置代理;</td><td>同上</td></tr><tr><td>all_proxy</td><td>全部变量设置代理,设置了这个时候上面的不用设置</td><td>同上</td></tr><tr><td>no_proxy</td><td>无需代理的主机或域名; 可以使用通配符; 多个时使用“,”号分隔;</td><td>.aiezu.com,10…,192.168.., *.local,localhost,127.0.0.1</td></tr></tbody></table><h3 id="代理协议的分类"><a href="#代理协议的分类" class="headerlink" title="代理协议的分类"></a>代理协议的分类</h3><table><thead><tr><th>协议</th><th>描述</th><th>示例</th></tr></thead><tbody><tr><td>Http代理</td><td>用于网页浏览等HTTP协议的代理服务</td><td>export http_proxy=”<a href="http://192.168.1.1:123";ip地址以及端口根据自己的配置写">http://192.168.1.1:123";ip地址以及端口根据自己的配置写</a></td></tr><tr><td>Https代理</td><td>类似于HTTP代理,但提供了加密传输,适用于安全的网页浏览</td><td>export https_proxy=”<a href="https://192.168.1.1:123";ip地址以及端口根据自己的配置写">https://192.168.1.1:123";ip地址以及端口根据自己的配置写</a></td></tr><tr><td>Socket4代理</td><td>是SOCKS5的前身,功能较为有限,不支持UDP和验证</td><td>export http_proxy=”socks5://192.168.1.1:123”/export https_proxy=”socks5://192.168.1.1:123”;ip以及端口根据自己的代理配置</td></tr><tr><td>Socket5代理</td><td>SOCKS代理可以支持多种协议,包括TCP和UDP,并且可以代理任何类型的流量,是常用版本,支持验证,并且可以代理基于UDP的流量</td><td>export http_proxy=”socks5://192.168.1.1:123”/export https_proxy=”socks5://192.168.1.1:123”;ip以及端口根据自己的代理配置</td></tr><tr><td>Ftp代理</td><td>专用于文件传输的代理服务</td><td>export ftp_proxy=”<a href="http://192.168.1.1:123";ip地址以及端口根据自己的配置写">http://192.168.1.1:123";ip地址以及端口根据自己的配置写</a></td></tr><tr><td>Shadowsocks代理</td><td>是一个加密的代理协议,常用于绕过网络审查</td><td>这个协议通常使用Socket5协议的端口进行数据通信,故,配置通Socket5</td></tr></tbody></table><h3 id="设置方式"><a href="#设置方式" class="headerlink" title="设置方式"></a>设置方式</h3><h4 id="1-临时生效(仅在当前shell下生效)"><a href="#1-临时生效(仅在当前shell下生效)" class="headerlink" title="1. 临时生效(仅在当前shell下生效)"></a>1. 临时生效(仅在当前shell下生效)</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell">export proxy="http://192.168.5.14:8118"<br>export http_proxy=$proxy<br>export https_proxy=$proxy<br>export ftp_proxy=$proxy<br>export no_proxy="localhost, 127.0.0.1, ::1"<br></code></pre></td></tr></table></figure><h4 id="2-永久生效"><a href="#2-永久生效" class="headerlink" title="2. 永久生效"></a>2. 永久生效</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">针对上面变量的设置方法</span><br>1、在/etc/profile<br>2、在~/.bashrc<br>3、在~/.zshrc<br>4、在~/.profile<br>4、在以上四类文件的其中一类的内容最后面添加临时生效的那些参数;如果配置了“all_proxy”参数,<br>那么其余参数就不需要了<br>5、写入完成后使用以下命令,使环境变量生效<br>source ~/.bashrc<br><span class="hljs-meta prompt_"># </span><span class="language-bash">例如</span><br>sudo tee /etc/profile.d/custom_proxy.sh <<'END'<br>export proxy="http://192.168.1.1:8080"<br><span class="hljs-meta prompt_"># </span><span class="language-bash"><span class="hljs-built_in">export</span> proxy=<span class="hljs-string">"socks5://192.168.1.1:1080"</span></span><br>export http_proxy=$proxy<br>export https_proxy=$proxy<br>export ftp_proxy=$proxy<br>export no_proxy="localhost, 127.0.0.1, ::1"<br>END<br></code></pre></td></tr></table></figure><h3 id="取消设置环境变量"><a href="#取消设置环境变量" class="headerlink" title="取消设置环境变量"></a>取消设置环境变量</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs shell">unset http_proxy<br>unset https_proxy<br>unset ftp_proxy<br>unset no_proxy<br></code></pre></td></tr></table></figure><hr><h2 id="Apt使用代理"><a href="#Apt使用代理" class="headerlink" title="Apt使用代理"></a>Apt使用代理</h2><h3 id="设置方式-1"><a href="#设置方式-1" class="headerlink" title="设置方式"></a>设置方式</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">1. 创建并编辑apt代理文件,文件名随便写,但是必须是“.conf”结尾</span><br>sudo vi /etc/apt/apt.conf.d/proxy.conf<br><span class="hljs-meta prompt_"># </span><span class="language-bash">2. 往文件里写入以下内容,ip地址以及端口号根据自己的配置进行更换</span><br>Acquire::http::Proxy "http://192.168.56.102:3128/"; <br><span class="hljs-meta prompt_"># </span><span class="language-bash">这一条是配置apt使用http协议时使用代理</span><br>Acquire::https::Proxy "http://192.168.56.102:3128/"; <br><span class="hljs-meta prompt_"># </span><span class="language-bash">这一条是配置apt使用https协议时使用代理</span><br>Acquire::ftp::Proxy "ftp://192.168.56.102:3128/"; <br><span class="hljs-meta prompt_"># </span><span class="language-bash">这一条是配置apt使用ftp协议时使用代理</span><br></code></pre></td></tr></table></figure><h4 id="如果代理有账号和密码"><a href="#如果代理有账号和密码" class="headerlink" title="如果代理有账号和密码"></a>如果代理有账号和密码</h4><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">同样,代理的ip地址、端口号、账号、密码信息根据自己的配置进行更换</span><br>Acquire::http::Proxy "http://init@PassW0rd321#@192.168.56.102:3128/";<br>Acquire::https::Proxy "http://init@PassW0rd321#@192.168.56.102:3128/";<br></code></pre></td></tr></table></figure><hr><h2 id="Yum使用代理"><a href="#Yum使用代理" class="headerlink" title="Yum使用代理"></a>Yum使用代理</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">单独设置yum代理访问,如下文件的变量,ip地址以及端口根据自己配置进行更改</span><br>echo "proxy=http://127.0.0.1:8080/" >> /etc/yum.conf<br></code></pre></td></tr></table></figure><hr><h1 id="参考文章"><a href="#参考文章" class="headerlink" title="参考文章"></a>参考文章</h1><ol><li><p><a href="https://cloud.tencent.com/developer/article/2129796">Linux操作系统下的全局代理配置与实践-腾讯云开发者社区-腾讯云</a></p></li><li><p><a href="https://zhuanlan.zhihu.com/p/629584549">如何为 APT 命令设置代理 | Linux 中国</a></p></li></ol>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>Linux</tag>
</tags>
</entry>
<entry>
<title>PVE优化</title>
<link href="/2024/10/27/PVE%E4%BC%98%E5%8C%96/"/>
<url>/2024/10/27/PVE%E4%BC%98%E5%8C%96/</url>
<content type="html"><![CDATA[<h1 id="PVE优化"><a href="#PVE优化" class="headerlink" title="PVE优化"></a>PVE优化</h1><h2 id="1-修改时区"><a href="#1-修改时区" class="headerlink" title="1. 修改时区"></a>1. 修改时区</h2><h3 id="Centos"><a href="#Centos" class="headerlink" title="Centos"></a>Centos</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">修改时区</span><br>cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br></code></pre></td></tr></table></figure><h3 id="Ubuntu"><a href="#Ubuntu" class="headerlink" title="Ubuntu"></a>Ubuntu</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">修改时区</span><br>cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br></code></pre></td></tr></table></figure><h2 id="2-命令行管理虚拟机"><a href="#2-命令行管理虚拟机" class="headerlink" title="2. 命令行管理虚拟机"></a>2. 命令行管理虚拟机</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_">#</span><span class="language-bash">查看集群资源状况</span><br><br>pvesh get /cluster/resources<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_">#</span><span class="language-bash">取得虚拟机当前状态</span><br><br>pvesh get /nodes/<节点id>/qemu/<虚拟机id>/status/current<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_">#</span><span class="language-bash">关闭虚拟机</span><br><br>pvesh create /nodes/<节点id>/qemu/<虚拟机id>/status/stop<br></code></pre></td></tr></table></figure><h2 id="3-Iptables端口转发"><a href="#3-Iptables端口转发" class="headerlink" title="3. Iptables端口转发"></a>3. Iptables端口转发</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">将本机的 7777 端口转发到 6666 端口。</span><br><br>iptables -t nat -A PREROUTING -p tcp --dport 7777 -j REDIRECT --to-port 6666<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">通过192.168.1.168 的 6666 端口访问192.168.1.8 的 7777 端口,在192.168.1.168 上设置:</span><br>sysctl -w net.ipv4.ip_forward=1<br>iptables -t nat -A PREROUTING -p tcp --dport 6666 -j DNAT --to-destination 192.168.1.8:7777<br>iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.8 --dport 7777 -j SNAT --to-source 192.168.1.168<br></code></pre></td></tr></table></figure><h2 id="4-PVE界面概要监控1970"><a href="#4-PVE界面概要监控1970" class="headerlink" title="4. PVE界面概要监控1970"></a>4. PVE界面概要监控1970</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs shell">rm /var/lib/rrdcached/db/* -rf<br></code></pre></td></tr></table></figure><h2 id="5-Debian网络默认配置"><a href="#5-Debian网络默认配置" class="headerlink" title="5. Debian网络默认配置"></a>5. Debian网络默认配置</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs shell">auto lo # 配置网卡开机自启动<br>iface lo inet loopback # 配置网卡的类型是回环口<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">The primary network interface</span> <br><br>auto eth0 <br>iface eth0 inet static # 配置该网卡为静态获取IP<br>address 192.168.0.42 <br>network 192.168.0.0 <br>netmask 255.255.255.0 <br>broadcast 192.168.0.255 <br>gateway 192.168.0.1<br></code></pre></td></tr></table></figure><h2 id="6-使用vi时方向键变字母和退格键的解决方案"><a href="#6-使用vi时方向键变字母和退格键的解决方案" class="headerlink" title="6. 使用vi时方向键变字母和退格键的解决方案"></a>6. 使用vi时方向键变字母和退格键的解决方案</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs shell">vi /etc/vim/vimrc.tiny<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">找到<span class="hljs-built_in">set</span> compatible这一行,然后改成以下的,保存退出即可</span><br>set nocompatible<br>set backspace=2<br></code></pre></td></tr></table></figure><h2 id="7-替换pve的ssl自签证书"><a href="#7-替换pve的ssl自签证书" class="headerlink" title="7. 替换pve的ssl自签证书"></a>7. 替换pve的ssl自签证书</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs shell">cd /etc/pve/nodes/{主机名}/<br><span class="hljs-meta prompt_"># </span><span class="language-bash">pve-ssl.key和 pve-ssl.pem即是需要替换的文件</span><br></code></pre></td></tr></table></figure><h2 id="8-转发pve的默认管理8006端口"><a href="#8-转发pve的默认管理8006端口" class="headerlink" title="8. 转发pve的默认管理8006端口"></a>8. 转发pve的默认管理8006端口</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs shell">iptables -t nat -I PREROUTING -d <IP> -p tcp --dport 443 -j DNAT --to-destination <IP>:8006<br><span class="hljs-meta prompt_"># </span><span class="language-bash">或</span><br>iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8006<br></code></pre></td></tr></table></figure><h2 id="9-pve完全彻底离开集群"><a href="#9-pve完全彻底离开集群" class="headerlink" title="9. pve完全彻底离开集群"></a>9. pve完全彻底离开集群</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs shell"><span class="hljs-meta prompt_"># </span><span class="language-bash">1.在web管理页面将节点退出集群</span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">当需要将故障(离线)节点退出集群,需要做以下的事</span><br><br>pvecm delnode {节点名} # 执行删除节点<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">2. 进入目录“/etc/pve/priv”</span><br>cd /etc/pve/priv<br><span class="hljs-meta prompt_"># </span><span class="language-bash">编辑“authorized_keys”与“known_host”文件,删除故障节点的信息</span><br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">3. 进入目录“/etc/pve/nodes”</span><br>cd /etc/pve/nodes<br><span class="hljs-meta prompt_"># </span><span class="language-bash">删除故障节点的目录</span><br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_"># </span><span class="language-bash">4. 删除故障节点挂载的硬盘或者存储</span><br></code></pre></td></tr></table></figure><h2 id="10-pve退出集群模式"><a href="#10-pve退出集群模式" class="headerlink" title="10. pve退出集群模式"></a>10. pve退出集群模式</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 1. 停止cluster服务</span><br>systemctl stop pve-cluster.service <br>systemctl stop corosync.service<br><br><span class="hljs-comment"># 2. 设置本地模式</span><br>pmxcfs -l<br><br><span class="hljs-comment"># 3. 删除corosync 配置文件</span><br><span class="hljs-built_in">rm</span> /etc/pve/corosync.conf <br><span class="hljs-built_in">rm</span> -rf /etc/corosync/*<br><br><span class="hljs-comment"># 4. 重启cluster集群服务</span><br>killall pmxcfs<br>systemctl start pve-cluster.service<br><br></code></pre></td></tr></table></figure><h2 id="任务错误:激活LV-‘pve-data’失败:当逻辑卷pve-data-tdata处于活动状态时,禁止激活逻辑卷pve-data"><a href="#任务错误:激活LV-‘pve-data’失败:当逻辑卷pve-data-tdata处于活动状态时,禁止激活逻辑卷pve-data" class="headerlink" title="任务错误:激活LV ‘pve/data’失败:当逻辑卷pve/data_tdata处于活动状态时,禁止激活逻辑卷pve/data"></a>任务错误:激活LV ‘pve/data’失败:当逻辑卷pve/data_tdata处于活动状态时,禁止激活逻辑卷pve/data</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs shell">lvhange -an pve/data<br>lvconvert --repair pve/data<br>lvchange -ay pve/data<br>qm unlock 100 <br></code></pre></td></tr></table></figure><h1 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h1><ol><li><p><a href="https://dongrenwen.github.io/2020/03/16/lxc-install-ntp/">https://dongrenwen.github.io/2020/03/16/lxc-install-ntp/</a></p></li><li><p><a href="https://www.wjxy.net.cn/?p=547">在PVE命令行下管理虚拟机的启动和停止 – 苏州凡卓文化科技有限公司</a></p></li><li><p><a href="https://blog.csdn.net/zhouguoqionghai/article/details/81947603">iptables 端口转发_iptable添加7777端口-CSDN博客</a></p></li><li><p><a href="https://www.jianshu.com/p/1cde7f677484">PVE的web界面概要监控1970-01-01的解决办法 - 简书</a></p></li><li><p><a href="https://www.npbeta.com/2021/06/iptables_pve_nat/">https://www.npbeta.com/2021/06/iptables_pve_nat/</a></p></li><li><p><a href="https://www.cnblogs.com/zhouhbing/p/4300733.html">Debian系网络配置 /etc/network/interfaces - 周人假的 - 博客园</a></p></li><li><p><a href="https://blog.csdn.net/SunJavaApplet/article/details/97040634">ProxmoxVE下使用Vi方向键变字母和退格键的解决办法_promox vi-CSDN博客</a></p></li><li><p><a href="https://blog.gavinzh.com/2020/04/19/precautions-after-installing-proxmox/">安装proxmox后注意事项 - 张恒的网络日志</a></p></li><li><p><a href="https://zhuanlan.zhihu.com/p/508160432">https://zhuanlan.zhihu.com/p/508160432</a></p></li><li><p><a href="https://blog.csdn.net/no1xium/article/details/111318448">Proxmox VE退出集群模式_proxmox退出集群-CSDN博客</a></p></li><li><p><a href="https://forum.proxmox.com/threads/task-error-activating-lv-pve-data-failed-activation-of-logical-volume-pve-data-is-prohibited-while-logical-volume-pve-data_tdata-is-active.106225/">TASK ERROR: activating LV 'pve/data' failed: Activation of logical volume pve/data is prohibited while logical volume pve/data_tdata is active. | Proxmox Support Forum</a></p></li></ol>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>Linux</tag>
<tag>Proxmox VE</tag>
</tags>
</entry>
<entry>
<title>网站使用的是HSTS的解决方法</title>
<link href="/2024/10/26/%E7%BD%91%E7%AB%99%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AFHSTS%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95/"/>
<url>/2024/10/26/%E7%BD%91%E7%AB%99%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AFHSTS%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95/</url>
<content type="html"><![CDATA[<h3 id="问题:《现在无法访问-XXX-com,因为网站使用的是-HSTS。网络错误和攻击通常是暂时的,因此该页面以后可能会恢复正常》"><a href="#问题:《现在无法访问-XXX-com,因为网站使用的是-HSTS。网络错误和攻击通常是暂时的,因此该页面以后可能会恢复正常》" class="headerlink" title="问题:《现在无法访问 XXX.com,因为网站使用的是 HSTS。网络错误和攻击通常是暂时的,因此该页面以后可能会恢复正常》"></a>问题:《现在无法访问 XXX.com,因为网站使用的是 HSTS。网络错误和攻击通常是暂时的,因此该页面以后可能会恢复正常》</h3><ul><li><p>解决:</p><p>在当前页面直接输入thisisunsafe(不是地址栏,真的是鼠标往那里一甩,直接就打字),甚至回车都不用,就直接进去了。至于原因。不知道真不真:其实就是一个Chromium内置的后门( edge 也是基于chorme),特地写成 thisis unsafe 就是让使用者不要滥用这个功能(之前叫 badidea ),输入之后 访问https网站显示“你的连接不是专用连接 ” 解决方法。</p></li></ul><h3 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h3><ol><li><a href="https://blog.csdn.net/ted_guangda/article/details/129010030">https://blog.csdn.net/ted_guangda/article/details/129010030</a></li></ol>]]></content>
<categories>
<category>浏览器</category>
</categories>
<tags>
<tag>Windows</tag>
</tags>
</entry>
<entry>
<title>Proxmox VE网络</title>
<link href="/2024/10/18/Proxmox%20VE%E7%BD%91%E7%BB%9C/"/>
<url>/2024/10/18/Proxmox%20VE%E7%BD%91%E7%BB%9C/</url>
<content type="html"><![CDATA[<h1 id="PVE网络"><a href="#PVE网络" class="headerlink" title="PVE网络"></a>PVE网络</h1><h2 id="软件定义网络(SDN)"><a href="#软件定义网络(SDN)" class="headerlink" title="软件定义网络(SDN)"></a>软件定义网络(SDN)</h2><ul><li>允许用户在数据中心级别创建虚拟网络(Vnet)</li><li>隔离由区域组成,一个区域就是它自己的虚拟隔离网络区域。</li><li>VPN是连接到区域的一种虚拟网络。根据专区使用的类型或插件的不同,它可能会有不同的行为,并提供不同的功能、优点或缺点。</li><li>通常,vNet显示为带有VLAN或VXLAN标签的普通Linux网桥,但有些网桥也可以使用第3层路由进行控制。</li><li>从群集范围的数据中心SDN管理界面提交配置后,将在每个节点上本地部署VNET。</li></ul><h3 id="分类"><a href="#分类" class="headerlink" title="分类"></a>分类</h3><table><thead><tr><th>VLAN</th><th>QinQ</th><th>VXLan</th><th>Simple</th><th>bgp-evpn</th></tr></thead><tbody><tr><td>虚拟LAN是细分LAN的经典方法</td><td>堆叠VLAN(正式名称为IEEE 802.1ad)</td><td>(第2层VXLAN)</td><td>隔离网桥,简单的3层路由网桥(NAT)</td><td>使用第3层边界网关协议路由的VXLAN</td></tr></tbody></table><h3 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h3><p>你需要在每个节点上安装 <code>libpve-network-perl</code> 和 <code>ifupdown2</code> 才能启用实验性的SDN功能。</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs shell">apt update && apt install libpve-network-perl ifupdown2 dnsmasq -y<br></code></pre></td></tr></table></figure><p>随后在<code>/etc/network/interfaces</code>末尾添加下面代码,这样SDN配置文件才能被读取和启用</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs shell">source /etc/network/interfaces.d/*<br></code></pre></td></tr></table></figure><hr><h2 id="PVE配置独立NAT网卡"><a href="#PVE配置独立NAT网卡" class="headerlink" title="PVE配置独立NAT网卡"></a>PVE配置独立NAT网卡</h2><ul><li><p>这里仅仅只是配置独立NAT网卡,并没有配置dhcp服务</p></li><li><p>网卡设置完,每台设备的ip地址以及网关、dns需要自己手动设置</p></li></ul><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs shell">vim /etc/network/interfaces<br></code></pre></td></tr></table></figure><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs shell">auto vmbr1<br>iface vmbr1 inet static<br> address 10.0.0.1/24 # ip子网地址随意写,只要不冲突<br> gateway 1.2.3.254 # 网关<br> bridge-ports none <br> bridge-stp off<br> bridge-fd 0<br> post-up echo 1 > /proc/sys/net/ipv4/ip_forward<br> # 这一条表示,开启ipv4转发,这是内核参数,让linux可以转发自身的ipv4数据包<br> # post-up echo 1 > /proc/sys/net/ipv6/ip_forward<br> # 这一条表示,开启ipv6转发,这是内核参数,让linux可以转发自身的ipv4数据包(根据自身情况开启)<br> post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE<br> # 这一条表示,网卡启用之后开启防火墙转发,转发规则为“源地址10.0.0.0/24”的流量,转发到vmbr0接口,*MASQUERADE*的意思是对IP地址数据包进行改写<br> post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE<br> # 这一条表示,网卡禁用之后删除这一条转发规则,转发规则为“源地址10.0.0.0/24”的流量,转发到vmbr0接口,*MASQUERADE*的意思是对IP地址数据包进行改写<br></code></pre></td></tr></table></figure><h1 id="参考文章"><a href="#参考文章" class="headerlink" title="参考文章"></a>参考文章</h1><ol><li><p><a href="https://einverne.github.io/post/2021/10/proxmox-ve-config-nat-vm-use-same-public-ip.html">独服 Proxmox VE 配置 NAT 使虚拟机共用一个公网 IP | Verne in GitHub</a></p></li><li><p><a href="https://pve-doc-cn.readthedocs.io/zh-cn/latest/">Proxmox VE 中文手册 v7.3 </a></p></li></ol>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>Linux</tag>
<tag>Proxmox VE</tag>
</tags>
</entry>
<entry>
<title>cockpit(驾驶舱服务)</title>
<link href="/2024/10/14/cockpit%EF%BC%88%E9%A9%BE%E9%A9%B6%E8%88%B1%E6%9C%8D%E5%8A%A1%EF%BC%89/"/>
<url>/2024/10/14/cockpit%EF%BC%88%E9%A9%BE%E9%A9%B6%E8%88%B1%E6%9C%8D%E5%8A%A1%EF%BC%89/</url>
<content type="html"><![CDATA[<h1 id="cockpit(驾驶舱服务)"><a href="#cockpit(驾驶舱服务)" class="headerlink" title="cockpit(驾驶舱服务)"></a>cockpit(驾驶舱服务)</h1><p>Cockpit是一个由Red Hat公司赞助的开源(基于GNUL LGPL协议)免费的基于 Web 的服务器图形界面。</p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><h3 id="Fedora"><a href="#Fedora" class="headerlink" title="Fedora"></a>Fedora</h3><p>Cockpit<strong>默认安装在 Fedora Server 中</strong>。要在 Fedora 的其他变体上安装 Cockpit,请使用以下命令。</p><ol><li><p> 安装驾驶舱:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">sudo</span> dnf install cockpit -y<br></code></pre></td></tr></table></figure></li><li><p> 启用驾驶舱:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">sudo</span> systemctl <span class="hljs-built_in">enable</span> --now cockpit.socket<br></code></pre></td></tr></table></figure></li><li><p>必要时打开防火墙:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">sudo</span> firewall-cmd --add-service=cockpit<br><span class="hljs-built_in">sudo</span> firewall-cmd --add-service=cockpit --permanent<br></code></pre></td></tr></table></figure></li></ol><h3 id="Red-Hat-Enterprise-Linux"><a href="#Red-Hat-Enterprise-Linux" class="headerlink" title="Red Hat Enterprise Linux"></a>Red Hat Enterprise Linux</h3><p>Cockpit 可在 Red Hat Enterprise Linux 7 及更高版本中使用。</p><ol><li><p>在 RHEL 7 上,启用<em>Extras</em>存储库。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">sudo</span> subscription-manager repos --<span class="hljs-built_in">enable</span> rhel-7-server-extras-rpms<br></code></pre></td></tr></table></figure><p>RHEL 8 不需要任何非默认存储库。</p></li><li><p> 安装驾驶舱:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">sudo</span> yum install cockpit -y <br></code></pre></td></tr></table></figure></li><li><p> 启用驾驶舱:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">sudo</span> systemctl <span class="hljs-built_in">enable</span> --now cockpit.socket<br></code></pre></td></tr></table></figure></li><li><p>在 RHEL 7 上,或者如果您在 RHEL 8 上使用非默认区域,请打开防火墙:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">sudo</span> firewall-cmd --add-service=cockpit<br><span class="hljs-built_in">sudo</span> firewall-cmd --add-service=cockpit --permanent<br></code></pre></td></tr></table></figure></li></ol><h3 id="Fedora-Core操作系统"><a href="#Fedora-Core操作系统" class="headerlink" title="Fedora Core操作系统"></a>Fedora Core操作系统</h3><p>标准 Fedora CoreOS 映像不包含 Cockpit 软件包。</p><ol><li><p>将 Cockpit 软件包安装为覆盖 RPM:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">rpm-ostree install cockpit-system cockpit-ostree cockpit-podman <br></code></pre></td></tr></table></figure><p>根据您的配置,您可能还想使用其他<a href="https://cockpit-project.org/applications.html"><code>cockpit-*</code>扩展</a>,例如<code>cockpit-kdump</code>或<code>cockpit-networkmanager</code> 。</p><p>如果您有自定义构建的 OSTree,只需在构建中包含相同的包即可。</p></li><li><p> 重新启动</p></li></ol><p>当 CoreOS 计算机仅通过另一台运行 Cockpit 的主机连接时,步骤 1 和 2 就足够了。</p><p>如果您还想运行 Web 服务器来直接登录 CoreOS 主机:</p><ol><li><p>启用基于密码的 SSH 登录,除非您仅使用<a href="https://cockpit-project.org/guide/latest/sso.html">SSO 登录</a>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">echo</span> <span class="hljs-string">'PasswordAuthentication yes'</span> | <span class="hljs-built_in">sudo</span> <span class="hljs-built_in">tee</span> /etc/ssh/sshd_config.d/02-enable-passwords.conf<br><span class="hljs-built_in">sudo</span> systemctl try-restart sshd<br></code></pre></td></tr></table></figure></li><li><p>使用特权容器(以 root 身份)运行 Cockpit Web 服务:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">podman container runlabel --name cockpit-ws RUN quay.io/cockpit/ws<br></code></pre></td></tr></table></figure></li><li><p>让 Cockpit 在启动时启动:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash">podman container runlabel INSTALL quay.io/cockpit/ws<br>systemctl <span class="hljs-built_in">enable</span> cockpit.service<br></code></pre></td></tr></table></figure></li></ol><h3 id="CentOS"><a href="#CentOS" class="headerlink" title="CentOS"></a>CentOS</h3><p>Cockpit 在 CentOS 7 及更高版本中可用:</p><ol><li><p> 安装驾驶舱:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">sudo</span> yum install cockpit -y <br></code></pre></td></tr></table></figure></li><li><p> 启用驾驶舱:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">sudo</span> systemctl <span class="hljs-built_in">enable</span> --now cockpit.socket<br></code></pre></td></tr></table></figure></li><li><p>必要时打开防火墙:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">sudo</span> firewall-cmd --permanent --zone=public --add-service=cockpit<br><span class="hljs-built_in">sudo</span> firewall-cmd --reload<br></code></pre></td></tr></table></figure></li></ol><h3 id="Debian"><a href="#Debian" class="headerlink" title="Debian"></a>Debian</h3><p>这些命令需要 POSIX 兼容的 shell,例如<code>bash</code> 。对于其他 shell(例如<code>fish</code> ,请暂时运行<code>bash -i</code> 。</p><p>Cockpit 自版本 10 (Buster) 起在 Debian 中可用。</p><ol><li><p>要获取最新版本,我们建议启用向后<a href="https://backports.debian.org/">移植存储库</a>(以 root 身份):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs bash">. /etc/os-release<br><span class="hljs-built_in">echo</span> <span class="hljs-string">"deb http://deb.debian.org/debian <span class="hljs-variable">${VERSION_CODENAME}</span>-backports main"</span> > \<br> /etc/apt/sources.list.d/backports.list<br>apt update<br></code></pre></td></tr></table></figure></li><li><p>安装或更新包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">apt install -t <span class="hljs-variable">${VERSION_CODENAME}</span>-backports cockpit -y <br></code></pre></td></tr></table></figure></li></ol><p>更新 Cockpit 相关包和任何依赖项时,请确保如上所述使用<code>-t ...-backports</code> ,以便包含向后移植。</p><h3 id="Ubuntu"><a href="#Ubuntu" class="headerlink" title="Ubuntu"></a>Ubuntu</h3><p>这些命令需要 POSIX 兼容的 shell,例如<code>bash</code> 。对于其他 shell(例如<code>fish</code> ,请暂时运行<code>bash -i</code> 。</p><p>Cockpit 可在 Ubuntu 中使用,并<a href="https://help.ubuntu.com/community/UbuntuBackports">在 LTS 版本的官方向后移植中提供更新版本</a>。</p><p>我们建议从向后移植安装或更新最新版本。该存储库默认启用,但如果您自定义了 apt 源,则可能需要<a href="https://help.ubuntu.com/community/UbuntuBackports#Enabling_Backports">手动启用它们</a>。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash">. /etc/os-release<br><span class="hljs-built_in">sudo</span> apt install -t <span class="hljs-variable">${VERSION_CODENAME}</span>-backports cockpit -y<br></code></pre></td></tr></table></figure><p>更新 Cockpit 相关包和任何依赖项时,请确保如上所述使用<code>-t ...-backports</code> ,以便包含向后移植。</p><h3 id="Arch-Linux"><a href="#Arch-Linux" class="headerlink" title="Arch Linux"></a>Arch Linux</h3><p><a href="https://archlinux.org/packages/extra/x86_64/cockpit/">Cockpit</a>可在<a href="https://www.archlinux.org/packages/">Arch Linux</a>中使用:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">sudo</span> pacman -S cockpit<br><span class="hljs-built_in">sudo</span> systemctl <span class="hljs-built_in">enable</span> --now cockpit.socket<br></code></pre></td></tr></table></figure><p>如果第一个命令失败并显示“…的数据库文件不存在”,请首先使用<code>sudo pacman -Syu</code>刷新/更新您的系统。</p><h2 id="通过Web界面访问"><a href="#通过Web界面访问" class="headerlink" title="通过Web界面访问"></a>通过Web界面访问</h2><figure class="highlight dts"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs dts"><span class="hljs-symbol">https:</span><span class="hljs-comment">//IP_ADDRESS_OF_MACHINE:9090</span><br></code></pre></td></tr></table></figure><h3 id="登录页"><a href="#登录页" class="headerlink" title="登录页"></a>登录页</h3><ul><li><p>这里通过系统用户进行登录,如系统普通用户”user“,密码为:“user”;</p></li><li><p>普通用户仅拥有,有限的权限,需要进行高级操作时可以进行”提权“</p></li></ul><p><img src="/img/assets/2024-10-14-16-37-42-image.png"></p><h3 id="内容概览"><a href="#内容概览" class="headerlink" title="内容概览"></a>内容概览</h3><p><img src="/img/assets/2024-10-14-16-41-16-image.png"></p><h3 id="内容日志"><a href="#内容日志" class="headerlink" title="内容日志"></a>内容日志</h3><p><img src="/img/assets/2024-10-14-16-41-50-image.png"></p><h3 id="存储页面"><a href="#存储页面" class="headerlink" title="存储页面"></a>存储页面</h3><p><img src="/img/assets/2024-10-14-16-42-09-image.png"></p><h3 id="网络页面"><a href="#网络页面" class="headerlink" title="网络页面"></a>网络页面</h3><p><img src="/img/assets/2024-10-14-16-42-32-image.png"></p><h3 id="用户账户页面"><a href="#用户账户页面" class="headerlink" title="用户账户页面"></a>用户账户页面</h3><p><img src="/img/assets/2024-10-14-16-42-58-image.png"></p><h3 id="系统服务页面"><a href="#系统服务页面" class="headerlink" title="系统服务页面"></a>系统服务页面</h3><p><img src="/img/assets/2024-10-14-16-43-19-image.png"></p><h3 id="内核转储页面"><a href="#内核转储页面" class="headerlink" title="内核转储页面"></a>内核转储页面</h3><p><img src="/img/assets/2024-10-14-16-44-03-image.png"></p><h3 id="软件更新页面"><a href="#软件更新页面" class="headerlink" title="软件更新页面"></a>软件更新页面</h3><p><img src="/img/assets/2024-10-14-16-44-21-image.png"></p><h3 id="应用程序页面"><a href="#应用程序页面" class="headerlink" title="应用程序页面"></a>应用程序页面</h3><p><img src="/img/assets/2024-10-14-16-44-44-image.png"></p><h3 id="系统诊断报告页面"><a href="#系统诊断报告页面" class="headerlink" title="系统诊断报告页面"></a>系统诊断报告页面</h3><p><img src="/img/assets/2024-10-14-16-45-04-image.png"></p><h3 id="远程终端页面"><a href="#远程终端页面" class="headerlink" title="远程终端页面"></a>远程终端页面</h3><p><img src="/img/assets/2024-10-14-16-45-27-image.png"></p><p>SELinux页面(Linux内核安全)</p><p><img src="/img/assets/2024-10-14-16-46-04-image.png"></p><h2 id="参考网址"><a href="#参考网址" class="headerlink" title="参考网址"></a>参考网址</h2><p>Cockpit官网:<a href="https://cockpit-project.org/">https://cockpit-project.org/</a></p>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>Linux</tag>
<tag>Red Hat</tag>
</tags>
</entry>
<entry>
<title>区块链技术</title>
<link href="/2024/10/13/%E5%8C%BA%E5%9D%97%E9%93%BE%E6%8A%80%E6%9C%AF(%E5%B7%B2%E5%AE%8C%E6%88%90)/"/>
<url>/2024/10/13/%E5%8C%BA%E5%9D%97%E9%93%BE%E6%8A%80%E6%9C%AF(%E5%B7%B2%E5%AE%8C%E6%88%90)/</url>
<content type="html"><![CDATA[<h1 id="第四次产业革命"><a href="#第四次产业革命" class="headerlink" title="第四次产业革命"></a>第四次产业革命</h1><h2 id="一、区块链定义:"><a href="#一、区块链定义:" class="headerlink" title="一、区块链定义:"></a>一、区块链定义:</h2><blockquote><p>所有区块按照时间顺序连接形成单向链式结构,第一个区块被称为创世区块;这是一个链式存储结构;区块就是链式存储结构中的数据元素</p></blockquote><h2 id="二、区块结构"><a href="#二、区块结构" class="headerlink" title="二、区块结构"></a>二、区块结构</h2><h2 id="三、区块链、物联网、云计算、大数据、人工智能"><a href="#三、区块链、物联网、云计算、大数据、人工智能" class="headerlink" title="三、区块链、物联网、云计算、大数据、人工智能"></a>三、区块链、物联网、云计算、大数据、人工智能</h2><h3 id="区块链-物联网"><a href="#区块链-物联网" class="headerlink" title="区块链+物联网"></a>区块链+物联网</h3><blockquote><p>物联网解决区块链信息上链的问题,避免人工干扰;基于区块链的分布式物联网解决中心管理模式下带来的基础设施建设和维护的巨资投入</p></blockquote><h3 id="区块链-云计算"><a href="#区块链-云计算" class="headerlink" title="区块链+云计算"></a>区块链+云计算</h3><blockquote><p>云计算解决应用本地化部署的成本;区块链解决云计算架构中的数据主权化的管理问题</p></blockquote><h3 id="区块链-人工智能"><a href="#区块链-人工智能" class="headerlink" title="区块链+人工智能"></a>区块链+人工智能</h3><blockquote><p>人工智能的生物识别可辅助建立更真实的数字身份认证;区块链解决个性化的人工智能</p></blockquote><h3 id="区块链-大数据"><a href="#区块链-大数据" class="headerlink" title="区块链+大数据"></a>区块链+大数据</h3><blockquote><p>大数据融入区块链,可以提高数据整合效率,降低数据维护成本,保障数据私密性,优化数据的分析挖掘能力</p></blockquote><h2 id="四、技术特性"><a href="#四、技术特性" class="headerlink" title="四、技术特性"></a>四、技术特性</h2><h2 id="五、对称加密"><a href="#五、对称加密" class="headerlink" title="五、对称加密"></a>五、对称加密</h2><h2 id="六、非对称加密"><a href="#六、非对称加密" class="headerlink" title="六、非对称加密"></a>六、非对称加密</h2><h2 id="七、常见的算法"><a href="#七、常见的算法" class="headerlink" title="七、常见的算法"></a>七、常见的算法</h2><h3 id="RSA"><a href="#RSA" class="headerlink" title="RSA"></a>RSA</h3><h3 id="Diffie-Hellman"><a href="#Diffie-Hellman" class="headerlink" title="Diffie-Hellman"></a>Diffie-Hellman</h3><h3 id="ECC-移动设备用"><a href="#ECC-移动设备用" class="headerlink" title="ECC(移动设备用)"></a>ECC(移动设备用)</h3><h3 id="EL-Gamal"><a href="#EL-Gamal" class="headerlink" title="EL Gamal"></a>EL Gamal</h3><h3 id="DSA-数字签名用"><a href="#DSA-数字签名用" class="headerlink" title="DSA(数字签名用)"></a>DSA(数字签名用)</h3><h3 id="哈希(信息提炼函数)"><a href="#哈希(信息提炼函数)" class="headerlink" title="哈希(信息提炼函数)"></a>哈希(信息提炼函数)</h3><h3 id="雪崩效应"><a href="#雪崩效应" class="headerlink" title="雪崩效应"></a>雪崩效应</h3><blockquote><p>任何输入信息的变化,会导致运算结果的明显变化</p></blockquote><h3 id="默克尔树"><a href="#默克尔树" class="headerlink" title="默克尔树"></a>默克尔树</h3><blockquote><p>是一种哈希二叉树,用于快速校验大规模数据的完整性</p></blockquote><h2 id="八、共识机制-公链-:"><a href="#八、共识机制-公链-:" class="headerlink" title="八、共识机制(公链):"></a>八、共识机制(公链):</h2><h3 id="POW-Proof-of-Work,工作量证明机制"><a href="#POW-Proof-of-Work,工作量证明机制" class="headerlink" title="POW(Proof of Work,工作量证明机制)"></a>POW(Proof of Work,工作量证明机制)</h3><blockquote><p>系统中的每个节点为整个系统提供计算能力(简称算力),通过竞争机制,让计算工作完成最出色的节点获得系统奖励(即区块的生成和数据的记录);</p><ul><li>例子:比特币,莱特币</li></ul></blockquote><table><thead><tr><th>优点</th><th>缺点</th></tr></thead><tbody><tr><td>完全去中心化、算法易实现、节点自由进出</td><td>浪费能源;区块确认的时间难以缩短;对节点性能与网络环境要求较高;在确定最长链之前,可能造成工作浪费</td></tr></tbody></table><h3 id="POS-Proof-of-Stake,权益证明机制"><a href="#POS-Proof-of-Stake,权益证明机制" class="headerlink" title="POS(Proof of Stake,权益证明机制)"></a>POS(Proof of Stake,权益证明机制)</h3><blockquote><p>当创造一个新区块时,节点创建一个“币权”交易,交易会按照预先设定的比例把一些虚拟货币发送给节点本身</p></blockquote><table><thead><tr><th>优点</th><th>缺点</th></tr></thead><tbody><tr><td>比POW更节能;能在一定程度社那个缩减达成共识的时间</td><td>虚拟货币智能通过融资的方式发行,无法保证持有者的抛售行为;信用基础不够牢固</td></tr></tbody></table><h3 id="DPOS-Delegated-Proof-of-Stake,委托权益证明机制"><a href="#DPOS-Delegated-Proof-of-Stake,委托权益证明机制" class="headerlink" title="DPOS(Delegated Proof of Stake,委托权益证明机制)"></a>DPOS(Delegated Proof of Stake,委托权益证明机制)</h3><blockquote><p>通过选举代表来进行投票和决策,被选举出的节点来做新区块的创建、验证、签名和互相监督</p></blockquote><table><thead><tr><th>优点</th><th>缺点</th></tr></thead><tbody><tr><td>能耗低;极大缩短共识验证时间</td><td>不能够及时响应一些节点代表的作恶行为</td></tr></tbody></table><h3 id="PBFT-Practical-Byzantine-Fault-Tolerance,实用拜占庭容错机制"><a href="#PBFT-Practical-Byzantine-Fault-Tolerance,实用拜占庭容错机制" class="headerlink" title="PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错机制)"></a>PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错机制)</h3><blockquote><p>采用“许可投票,少数服从多数”来选举领导者并进行记账的共识机制;</p><p>允许拜占庭容错;允许强监督节点参与;具备权限分级能力;</p><p>每轮记账都会由全网节点共同选举领导者,容错率33%</p></blockquote><table><thead><tr><th>优点</th><th>缺点</th></tr></thead><tbody><tr><td>效率高;容错性高;节能环保</td><td>当网络不稳定或参与者数量过多时,系统的稳定性和效率会显著下降</td></tr></tbody></table><h2 id="九、记账方式"><a href="#九、记账方式" class="headerlink" title="九、记账方式"></a>九、记账方式</h2><h3 id="仅记录交易"><a href="#仅记录交易" class="headerlink" title="仅记录交易"></a>仅记录交易</h3><table><thead><tr><th>优点</th><th>缺点</th></tr></thead><tbody><tr><td>存储数据简单,量小,交易上链的先后顺序不敏感</td><td>每次计算账户余额需要遍历所有交易汇总计算</td></tr></tbody></table><h3 id="同时记录交易和账户余额"><a href="#同时记录交易和账户余额" class="headerlink" title="同时记录交易和账户余额"></a>同时记录交易和账户余额</h3><table><thead><tr><th>优点</th><th>缺点</th></tr></thead><tbody><tr><td>快速读取账号当前状态;账户状态与交易记录可以交叉验证</td><td>效率低;交易上链与账户更新需要同步操作</td></tr></tbody></table><h2 id="激励机制"><a href="#激励机制" class="headerlink" title="激励机制"></a>激励机制</h2><h3 id="无币区块链"><a href="#无币区块链" class="headerlink" title="无币区块链"></a>无币区块链</h3><blockquote><p>专注于分布式网络、共享账本、加密算法、智能合约等区块链技术的应用 </p></blockquote><h3 id="通证经济"><a href="#通证经济" class="headerlink" title="通证经济"></a>通证经济</h3><blockquote><p>针对区块链项目的社区自治模式,基于博弈论和产权理论设计社群经济模型、治理机制和自金融生态;</p><ul><li><p>通证是项目和社群价值的载体;</p></li><li><p>发行和分配制度设计是核心问题</p></li></ul></blockquote><h3 id="通证与区块链分离"><a href="#通证与区块链分离" class="headerlink" title="通证与区块链分离"></a>通证与区块链分离</h3><blockquote><p>把通证经济概念引入传统区域,利用通证设计激活经济活力</p></blockquote>]]></content>
<categories>
<category>服务器</category>
</categories>
<tags>
<tag>区块链</tag>
</tags>
</entry>
</search>