天天看點

分布式檔案存儲fastdfs

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

<code>我的部落格已遷移到xdoujiang.com請去那邊和我交流</code>

<code>FastDFS是一個開源的輕量級應用級的分布式檔案存儲服務,它對檔案進行管理,功能包括:</code>

<code>檔案存儲、檔案同步、檔案通路(檔案上傳、檔案下載下傳)等解決了大容量存儲和負載均衡的問題。</code>

<code>特别适合以檔案為載體的線上服務,如相冊網站、視訊網站等等。</code>

<code>FastDFS有三個角色:跟蹤伺服器(tracker server)、存儲伺服器(storage server)和用戶端(client)。</code>

<code>1)跟蹤伺服器:主要做排程工作 起負載均衡的作用</code>

<code>2)存儲伺服器:存儲節點存儲檔案 完成檔案管理的所有功能:存儲、同步和提供存取接口</code>

<code>3)用戶端:可以使用fdfs_upload_file、c、php、java、python、.net等api接口</code>

<code>使用TCP</code><code>/IP</code><code>協定與跟蹤器伺服器或存儲節點進行資料互動</code>

<code>一、基礎環境</code>

<code>1、角色、ip、版本、核心、fastdfs、fastdfs-nginx-module、nginx</code>

<code>serverA 10.1.10.117 3.2.0-4-amd64 7.8 tracker nginx</code>

<code>serverB 10.1.10.185 3.2.0-4-amd64 7.8 storage fastdfs-nginx-module nginx group1</code>

<code>serverC 10.1.10.194 3.2.0-4-amd64 7.8 storage fastdfs-nginx-module nginx group1</code>

<code>client 10.1.10.117</code>

<code>fastdfs版本5.05</code>

<code>fastdfs-nginx-module版本1.15</code>

<code>nginx版本1.4.7</code>

<code>libfastcommon版本1.3</code>

<code>2、安裝基礎包</code>

<code>apt-get -y </code><code>install</code> <code>git wget gcc </code><code>make</code> <code>libpcre3-dev libpcre3 libssl-dev zlib1g-dev</code>

<code>axel libc6-dev libc-bin curl</code>

<code>二、在serverA上安裝fastdfs的tracker角色</code>

<code>1、git方式下載下傳</code>

<code>git clone https:</code><code>//github</code><code>.com</code><code>/happyfish100/libfastcommon</code><code>.git libfastcommon</code>

<code>git clone https:</code><code>//github</code><code>.com</code><code>/happyfish100/fastdfs</code><code>.git fastdfs</code>

<code>2、編譯安裝</code>

<code>1)</code><code>cd</code> <code>libfastcommon</code>

<code>bash</code> <code>make</code><code>.sh</code>

<code>bash</code> <code>make</code><code>.sh </code><code>install</code>

<code>2)</code><code>cd</code> <code>fastdfs</code>

<code>3、檢視相應指令具體在哪裡</code>

<code>ll </code><code>/usr/bin/fdfs</code><code>*</code>

<code>-rwxr-xr-x 1 root root  349008 Aug 21 14:12 </code><code>/usr/bin/fdfs_appender_test</code>

<code>-rwxr-xr-x 1 root root  348193 Aug 21 14:12 </code><code>/usr/bin/fdfs_appender_test1</code>

<code>-rwxr-xr-x 1 root root  333057 Aug 21 14:12 </code><code>/usr/bin/fdfs_append_file</code>

<code>-rwxr-xr-x 1 root root  333109 Aug 21 14:12 </code><code>/usr/bin/fdfs_crc32</code>

<code>-rwxr-xr-x 1 root root  333164 Aug 21 14:12 </code><code>/usr/bin/fdfs_delete_file</code>

<code>-rwxr-xr-x 1 root root  334435 Aug 21 14:12 </code><code>/usr/bin/fdfs_download_file</code>

<code>-rwxr-xr-x 1 root root  333737 Aug 21 14:12 </code><code>/usr/bin/fdfs_file_info</code>

<code>-rwxr-xr-x 1 root root  351638 Aug 21 14:12 </code><code>/usr/bin/fdfs_monitor</code>

<code>-rwxr-xr-x 1 root root 1211424 Aug 21 14:12 </code><code>/usr/bin/fdfs_storaged</code>

<code>-rwxr-xr-x 1 root root  358392 Aug 21 14:12 </code><code>/usr/bin/fdfs_test</code>

<code>-rwxr-xr-x 1 root root  357073 Aug 21 14:12 </code><code>/usr/bin/fdfs_test1</code>

<code>-rwxr-xr-x 1 root root  491214 Aug 21 14:12 </code><code>/usr/bin/fdfs_trackerd</code>

<code>-rwxr-xr-x 1 root root  334835 Aug 21 14:12 </code><code>/usr/bin/fdfs_upload_appender</code>

<code>-rwxr-xr-x 1 root root  336773 Aug 21 14:12 </code><code>/usr/bin/fdfs_upload_file</code>

<code>4、建立資料目錄</code>

<code>mkdir</code> <code>-p </code><code>/opt/fastdfs/tracker</code>

<code>5、建立組和使用者</code>

<code>groupadd fastdfs</code>

<code>useradd</code> <code>-s </code><code>/bin/bash</code> <code>-d </code><code>/opt/fastdfs/</code> <code>-g fastdfs fastdfs</code>

<code>6、修改相關目錄權限</code>

<code>chown</code> <code>-R fastdfs.fastdfs </code><code>/opt/fastdfs</code>

<code>7、修改配置</code>

<code>1)備份配置</code>

<code>cp</code> <code>/etc/fdfs/tracker</code><code>.conf.sample </code><code>/etc/fdfs/tracker</code><code>.conf</code>

<code>2)修改配置</code><code>/etc/fdfs/tracker</code><code>.conf(serverA)</code>

<code>sed</code> <code>-i </code><code>'s/bind_addr=.*/bind_addr=10.1.10.117/'</code> <code>/etc/fdfs/tracker</code><code>.conf</code>

<code>sed</code> <code>-i </code><code>'s!base_path=.*!base_path=/opt/fastdfs/tracker/!g'</code> <code>/etc/fdfs/tracker</code><code>.conf</code>

<code>sed</code> <code>-i </code><code>'s!run_by_group=.*!run_by_group=fastdfs!g'</code> <code>/etc/fdfs/tracker</code><code>.conf</code>

<code>sed</code> <code>-i </code><code>'s!run_by_user=.*!run_by_user=fastdfs!g'</code> <code>/etc/fdfs/tracker</code><code>.conf</code>

<code>8、啟動服務tracker</code>

<code>1)使用ldd指令檢查相應支援子產品</code>

<code>ldd </code><code>/usr/bin/fdfs_trackerd</code>

<code>    </code><code>linux-vdso.so.1 =&gt;  (0x00007ffd4abb3000)</code>

<code>    </code><code>libpthread.so.0 =&gt; </code><code>/lib/x86_64-linux-gnu/libpthread</code><code>.so.0 (0x00007f5dd7c48000)</code>

<code>    </code><code>libdl.so.2 =&gt; </code><code>/lib/x86_64-linux-gnu/libdl</code><code>.so.2 (0x00007f5dd7a44000)</code>

<code>    </code><code>libfastcommon.so =&gt; not found</code>

<code>    </code><code>libc.so.6 =&gt; </code><code>/lib/x86_64-linux-gnu/libc</code><code>.so.6 (0x00007f5dd76b8000)</code>

<code>    </code><code>/lib64/ld-linux-x86-64</code><code>.so.2 (0x00007f5dd7e6a000)</code>

<code>PS:檢視到libfastcommon.so =&gt; not found 目前不找到</code>

<code>2)先找下libfastcommon.so這個檔案在哪裡</code>

<code>find</code> <code>/ -name </code><code>"libfastcommon.so"</code>

<code>/root/libfastcommon/src/libfastcommon</code><code>.so</code>

<code>/usr/lib64/libfastcommon</code><code>.so</code>

<code>2)加載libfastcommon.so</code>

<code>echo</code> <code>"/usr/lib64"</code> <code>&gt; </code><code>/etc/ld</code><code>.so.conf.d</code><code>/libfastcommon</code><code>.conf</code>

<code>ldconfig</code>

<code>3)再次檢視下</code>

<code>    </code><code>linux-vdso.so.1 =&gt;  (0x00007ffebedd2000)</code>

<code>    </code><code>libpthread.so.0 =&gt; </code><code>/lib/x86_64-linux-gnu/libpthread</code><code>.so.0 (0x00007f3732ddb000)</code>

<code>    </code><code>libdl.so.2 =&gt; </code><code>/lib/x86_64-linux-gnu/libdl</code><code>.so.2 (0x00007f3732bd7000)</code>

<code>    </code><code>libfastcommon.so =&gt; </code><code>/usr/lib64/libfastcommon</code><code>.so (0x00007f37329ae000)</code>

<code>    </code><code>libc.so.6 =&gt; </code><code>/lib/x86_64-linux-gnu/libc</code><code>.so.6 (0x00007f3732623000)</code>

<code>    </code><code>/lib64/ld-linux-x86-64</code><code>.so.2 (0x00007f3732ffd000)</code>

<code>    </code><code>libm.so.6 =&gt; </code><code>/lib/x86_64-linux-gnu/libm</code><code>.so.6 (0x00007f37323a1000)</code>

<code>PS:都OK了</code>

<code>4)啟動tracker服務</code>

<code>fdfs_trackerd </code><code>/etc/fdfs/tracker</code><code>.conf</code>

<code>9、檢視端口和程序tracker</code>

<code>1)檢視端口tracker</code>

<code>netstat</code> <code>-tupnl|</code><code>grep</code> <code>trackerd</code>

<code>tcp        0      0 10.1.10.117:22122       0.0.0.0:*       LISTEN      11461</code><code>/fdfs_trackerd</code>

<code>2)檢視程序tracker</code>

<code>ps</code> <code>-ef |</code><code>grep</code> <code>track</code>

<code>root      11461      1  0 17:32 ?        00:00:00 fdfs_trackerd </code><code>/etc/fdfs/tracker</code><code>.conf</code>

<code>10、檢視日志</code>

<code>1)檢視trackerd日志</code>

<code>cat</code> <code>/opt/fastdfs/tracker/logs/trackerd</code><code>.log </code>

<code>[2015-08-27 14:51:15] INFO - FastDFS v5.07, base_path=</code><code>/opt/fastdfs/tracker</code><code>, run_by_group=fastdfs, run_by_user=fastdfs, connect_timeout=30s, network_timeout=60s, port=22122, bind_addr=10.1.10.117, max_connections=256, accept_threads=1, work_threads=4, store_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=10.00%, download_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size=64 KB, storage_ip_changed_auto_adjust=1, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s, use_trunk_file=0, slot_min_size=256, slot_max_size=16 MB, trunk_file_size=64 MB, trunk_create_file_advance=0, trunk_create_file_time_base=02:00, trunk_create_file_interval=86400, trunk_create_file_space_threshold=20 GB, trunk_init_check_occupying=0, trunk_init_reload_from_binlog=0, trunk_compress_binlog_min_interval=0, use_storage_id=0, id_type_in_filename=ip, storage_id_count=0, rotate_error_log=0, error_log_rotate_time=00:00, rotate_error_log_size=0, log_file_keep_days=0, store_slave_file_use_link=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s</code>

<code>[2015-08-27 14:51:15] INFO - local_host_ip_count: 2,  127.0.0.1  10.1.10.117</code>

<code>11、設定開機啟動</code>

<code>echo</code> <code>"/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf"</code> <code>&gt;&gt; </code><code>/etc/rc</code><code>.</code><code>local</code>

<code>三、 分别在serverB和C上安裝fastdfs的storage角色和nginx和fastdfs-nginx-module子產品</code>

<code>git clone https:</code><code>//github</code><code>.com</code><code>/happyfish100/fastdfs-nginx-module</code> <code>fastdfs-nginx-module</code>

<code>2、編譯安裝(serverB和serverC)</code>

<code>3、建立資料目錄(serverB和serverC)</code>

<code>mkdir</code> <code>-p </code><code>/opt/fastdfs/storage</code>

<code>4、建立組和使用者(serverB和serverC)</code>

<code>5、修改相關目錄權限(serverB和serverC)</code>

<code>6、修改配置</code><code>/etc/fdfs/storage</code><code>.conf(serverB和serverC)</code>

<code>cp</code> <code>/etc/fdfs/storage</code><code>.conf.sample </code><code>/etc/fdfs/storage</code><code>.conf</code>

<code>2)修改配置</code><code>/etc/fdfs/storage</code><code>.conf</code>

<code>sed</code> <code>-i </code><code>'s/bind_addr=.*/bind_addr=10.1.10.185/'</code> <code>/etc/fdfs/storage</code><code>.conf</code>

<code>sed</code> <code>-i </code><code>'s!base_path=.*!base_path=/opt/fastdfs/storage/!g'</code> <code>/etc/fdfs/storage</code><code>.conf</code>

<code>sed</code> <code>-i </code><code>'s!store_path0=.*!store_path0=/opt/fastdfs/storage/!g'</code> <code>/etc/fdfs/storage</code><code>.conf</code>

<code>sed</code> <code>-i </code><code>'s!tracker_server=.*!tracker_server=10.1.10.117:22122!g'</code> <code>/etc/fdfs/storage</code><code>.conf</code>

<code>sed</code> <code>-i </code><code>'s!run_by_group=.*!run_by_group=fastdfs!g'</code> <code>/etc/fdfs/storage</code><code>.conf</code>

<code>sed</code> <code>-i </code><code>'s!run_by_user=.*!run_by_user=fastdfs!g'</code> <code>/etc/fdfs/storage</code><code>.conf</code>

<code>sed</code> <code>-i </code><code>'s!http.server_port=.*!http.server_port=80!g'</code> <code>/etc/fdfs/storage</code><code>.conf</code>

<code>PS:這裡bind_addr的IP如果是serverB那麼就是10.1.10.185</code>

<code>這裡bind_addr的IP如果是serverC那麼就是10.1.10.194</code>

<code>7、加載libfastcommon.so(serverB和serverC)</code>

<code>8、啟動storage服務(serverB和serverC)</code>

<code>fdfs_storaged </code><code>/etc/fdfs/storage</code><code>.conf</code>

<code>9、檢視端口和程序storage(serverB和serverC)</code>

<code>1)檢視端口storage</code>

<code>netstat</code> <code>-tupnl|</code><code>grep</code> <code>storage</code>

<code>tcp        0      0 10.1.10.194:23000       0.0.0.0:*   、 LISTEN      9665</code><code>/fdfs_storaged</code>

<code>2)檢視程序storage</code>

<code>ps</code> <code>-ef |</code><code>grep</code> <code>storage</code>

<code>fastdfs    9665      1  3 17:48 ?        00:00:02 fdfs_storaged </code><code>/etc/fdfs/storage</code><code>.conf</code>

<code>10、檢視日志(serverB和serverC)</code>

<code>1)檢視storage日志</code>

<code>cat</code> <code>/opt/fastdfs/storage/logs/storaged</code><code>.log</code>

<code>[2015-08-31 13:58:39] INFO - FastDFS v5.07, base_path=</code><code>/opt/fastdfs/storage</code><code>, store_path_count=1, subdir_count_per_path=256, group_name=group1, run_by_group=fastdfs, run_by_user=fastdfs, connect_timeout=30s, network_timeout=60s, port=23000, bind_addr=10.1.10.194, client_bind=1, max_connections=256, accept_threads=1, work_threads=4, disk_rw_separated=1, disk_reader_threads=1, disk_writer_threads=1, buff_size=256KB, heart_beat_interval=30s, stat_report_interval=60s, tracker_server_count=1, sync_wait_msec=50ms, sync_interval=0ms, sync_start_time=00:00, sync_end_time=23:59, write_mark_file_freq=500, allow_ip_count=-1, file_distribute_path_mode=0, file_distribute_rotate_count=100, fsync_after_written_bytes=0, sync_log_buff_interval=10s, sync_binlog_buff_interval=10s, sync_stat_file_interval=300s, thread_stack_size=512 KB, upload_priority=10, if_alias_prefix=, check_file_duplicate=0, file_signature_method=</code><code>hash</code><code>, FDHT group count=0, FDHT server count=0, FDHT key_namespace=, FDHT keep_alive=0, HTTP server port=80, domain name=, use_access_log=0, rotate_access_log=0, access_log_rotate_time=00:00, rotate_error_log=0, error_log_rotate_time=00:00, rotate_access_log_size=0, rotate_error_log_size=0, log_file_keep_days=0, file_sync_skip_invalid_record=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s</code>

<code>data path: </code><code>/opt/fastdfs/storage//data</code><code>, </code><code>mkdir</code> <code>sub </code><code>dir</code><code>...</code>

<code>data path: </code><code>/opt/fastdfs/storage//data</code><code>, </code><code>mkdir</code> <code>sub </code><code>dir</code> <code>done</code><code>.</code>

<code>[2015-08-31 13:59:02] INFO - </code><code>file</code><code>: storage_param_getter.c, line: 191, use_storage_id=0, id_type_in_filename=ip, storage_ip_changed_auto_adjust=1, store_path=0, reserved_storage_space=10.00%, use_trunk_file=0, slot_min_size=256, slot_max_size=16 MB, trunk_file_size=64 MB, trunk_create_file_advance=0, trunk_create_file_time_base=02:00, trunk_create_file_interval=86400, trunk_create_file_space_threshold=20 GB, trunk_init_check_occupying=0, trunk_init_reload_from_binlog=0, trunk_compress_binlog_min_interval=0, store_slave_file_use_link=0</code>

<code>[2015-08-31 13:59:02] INFO - </code><code>file</code><code>: storage_func.c, line: 254, tracker_client_ip: 10.1.10.194, my_server_id_str: 10.1.10.194, g_server_id_in_filename: -1039531766</code>

<code>[2015-08-31 13:59:02] INFO - local_host_ip_count: 2,  127.0.0.1  10.1.10.194</code>

<code>[2015-08-31 13:59:04] ERROR - </code><code>file</code><code>: tracker_client_thread.c, line: 277, connect to tracker server 10.1.10.117:22122 fail, errno: 4, error info: Interrupted system call</code>

<code>[2015-08-31 13:59:04] INFO - </code><code>file</code><code>: tracker_client_thread.c, line: 310, successfully connect to tracker server 10.1.10.117:22122, continuous fail count: 1, as a tracker client, my ip is 10.1.10.194</code>

<code>[2015-08-31 13:59:04] INFO - </code><code>file</code><code>: tracker_client_thread.c, line: 1235, tracker server 10.1.10.117:22122, </code><code>set</code> <code>tracker leader: 10.1.10.117:22122</code>

<code>[2015-08-31 13:59:04] INFO - </code><code>file</code><code>: storage_sync.c, line: 2698, successfully connect to storage server 10.1.10.185:23000</code>

<code>11、使用fdfs_monitor指令檢視叢集資訊(serverB和serverC)</code>

<code>fdfs_monitor </code><code>/etc/fdfs/storage</code><code>.conf</code>

<code>[2015-08-31 14:01:54] DEBUG - base_path=</code><code>/opt/fastdfs/storage</code><code>, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server </code><code>id</code> <code>count: 0</code>

<code>server_count=1, server_index=0</code>

<code>tracker server is 10.1.10.117:22122</code>

<code>group count: 1</code>

<code>Group 1:</code>

<code>group name = group1</code>

<code>disk total space = 37251 MB</code>

<code>disk </code><code>free</code> <code>space = 34926 MB</code>

<code>trunk </code><code>free</code> <code>space = 0 MB</code>

<code>storage server count = 2</code>

<code>active server count = 2</code>

<code>storage server port = 23000</code>

<code>storage HTTP port = 80</code>

<code>store path count = 1</code>

<code>subdir count per path = 256</code>

<code>    </code><code>Storage 1:</code>

<code>        </code><code>id</code> <code>= 10.1.10.185</code>

<code>        </code><code>ip_addr = 10.1.10.185  ACTIVE</code>

<code>        </code><code>http domain = </code>

<code>        </code><code>version = 5.07</code>

<code>        </code><code>join</code> <code>time</code> <code>= 2015-08-31 13:58:36</code>

<code>        </code><code>up </code><code>time</code> <code>= 2015-08-31 13:58:36</code>

<code>        </code><code>total storage = 37251 MB</code>

<code>        </code><code>free</code> <code>storage = 34926 MB</code>

<code>        </code><code>upload priority = 10</code>

<code>        </code><code>store_path_count = 1</code>

<code>        </code><code>subdir_count_per_path = 256</code>

<code>        </code><code>storage_port = 23000</code>

<code>        </code><code>storage_http_port = 80</code>

<code>        </code><code>source</code> <code>storage </code><code>id</code> <code>= </code>

<code>        </code><code>connection.alloc_count = 256</code>

<code>        </code><code>connection.current_count = 1</code>

<code>        </code><code>connection.max_count = 1</code>

<code>        </code><code>last_heart_beat_time = 2015-08-31 14:01:29</code>

<code>        </code><code>last_source_update = 1970-01-01 08:00:00</code>

<code>        </code><code>last_sync_update = 1970-01-01 08:00:00</code>

<code>        </code><code>last_synced_timestamp = 1970-01-01 08:00:00 </code>

<code>    </code><code>Storage 2:</code>

<code>        </code><code>id</code> <code>= 10.1.10.194</code>

<code>        </code><code>ip_addr = 10.1.10.194  ACTIVE</code>

<code>        </code><code>join</code> <code>time</code> <code>= 2015-08-31 13:58:39</code>

<code>        </code><code>up </code><code>time</code> <code>= 2015-08-31 13:58:39</code>

<code>        </code><code>source</code> <code>storage </code><code>id</code> <code>= 10.1.10.185</code>

<code>        </code><code>last_heart_beat_time = 2015-08-31 14:01:33</code>

<code>12、設定開機啟動(serverB和serverC)</code>

<code>echo</code> <code>"/usr/bin/fdfs_storaged /etc/fdfs/storage.conf"</code> <code>&gt;&gt; </code><code>/etc/rc</code><code>.</code><code>local</code>         

<code>        </code> 

<code>13、安裝nginx及fastdfs-nginx-module(nginx提供http服務及</code>

<code>fastdfs-nginx-module解決同步問題)(serverB和serverC)</code>

<code>1)建立nginx使用者(serverB和serverC)</code>

<code>groupadd nginx</code>

<code>useradd</code> <code>nginx -g nginx -s </code><code>/bin/false</code>

<code>2)下載下傳nginx(serverB和serverC)</code>

<code>axel -n 10 http:</code><code>//nginx</code><code>.org</code><code>/download/nginx-1</code><code>.4.7.</code><code>tar</code><code>.gz</code>

<code>3)解壓(serverB和serverC)</code>

<code>tar</code> <code>zxvf nginx-1.4.7.</code><code>tar</code><code>.gz &amp;&amp; </code><code>cd</code> <code>nginx-1.4.7</code>

<code>4)編譯三部曲(serverB和serverC)</code>

<code>.</code><code>/configure</code> <code>--prefix=</code><code>/opt/nginx</code> <code>--user=nginx --group=nginx --with-http_ssl_module --add-module=</code><code>/root/fastdfs-nginx-module/src</code>

<code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code>

<code>5)為了友善 弄個軟連結(serverB和serverC)</code>

<code>ln</code> <code>-s </code><code>/opt/nginx/sbin/nginx</code> <code>/usr/local/sbin/nginx</code>

<code>6)備份配置(serverB和serverC)</code>

<code>cp</code> <code>/opt/nginx/conf/nginx</code><code>.conf </code><code>/opt/nginx/conf/nginx</code><code>.conf.bak</code>

<code>cp</code> <code>/root/fastdfs-nginx-module/src/mod_fastdfs</code><code>.conf </code><code>/etc/fdfs/</code>

<code>cp</code> <code>/root/fastdfs/conf/http</code><code>.conf </code><code>/etc/fdfs</code>

<code>cp</code> <code>/root/fastdfs/conf/mime</code><code>.types </code><code>/etc/fdfs</code>

<code>7)修改配置</code><code>/opt/nginx/conf/nginx</code><code>.conf(serverB和serverC)</code>

<code>diff</code> <code>/opt/nginx/conf/nginx</code><code>.conf </code><code>/opt/nginx/conf/nginx</code><code>.conf.bak </code>

<code>3d2</code>

<code>&lt; user nginx;</code>

<code>37,40c36,38</code>

<code>&lt;         listen       10.1.10.194:80;</code>

<code>&lt;         server_name  10.1.10.194;</code>

<code>&lt;         access_log </code><code>/opt/nginx/logs/10</code><code>.1.10.194.access.log;</code>

<code>&lt;         error_log </code><code>/opt/nginx/logs/10</code><code>.1.10.194.error.log;</code>

<code>---</code>

<code>&gt;         listen       80;</code>

<code>&gt;         server_name  localhost;</code>

<code>&gt; </code>

<code>45,47c43,45</code>

<code>&lt;         location </code><code>/group1/M00</code> <code>{</code>

<code>&lt;             root </code><code>/opt/fastdfs/storage/data</code><code>;</code>

<code>&lt;             ngx_fastdfs_module;</code>

<code>&gt;         location / {</code>

<code>&gt;             root   html;</code>

<code>&gt;             index  index.html index.htm;</code>

<code>8)修改配置</code><code>/etc/fdfs/mod_fastdfs</code><code>.conf(serverB和serverC)</code>

<code>sed</code> <code>-i </code><code>'s!base_path=.*!base_path=/opt/fastdfs/storage/!g'</code> <code>/etc/fdfs/mod_fastdfs</code><code>.conf</code>

<code>sed</code> <code>-i </code><code>'s!store_path0=.*!store_path0=/opt/fastdfs/storage/!g'</code> <code>/etc/fdfs/mod_fastdfs</code><code>.conf</code>

<code>sed</code> <code>-i </code><code>'s!tracker_server=.*!tracker_server=10.1.10.117:22122!g'</code> <code>/etc/fdfs/mod_fastdfs</code><code>.conf</code>

<code>sed</code> <code>-i </code><code>'s!url_have_group_name =.*!url_have_group_name = true!g'</code> <code>/etc/fdfs/mod_fastdfs</code><code>.conf</code>

<code>9)啟動服務nginx(serverB和serverC)</code>

<code>nginx </code>

<code>ngx_http_fastdfs_set pid=12058</code>

<code>10)檢視端口程序nginx(serverB和serverC)</code>

<code>netstat</code> <code>-tupnl |</code><code>grep</code> <code>nginx</code>

<code>tcp        0      0 10.1.10.194:80        0.0.0.0:*               LISTEN      12059</code><code>/nginx</code><code>: master</code>

<code>ps</code> <code>-ef |</code><code>grep</code> <code>nginx(serverB和serverC)</code>

<code>root      12059      1  0 19:01 ?        00:00:00 nginx: master process nginx</code>

<code>11)檢視日志(serverB和serverC)</code>

<code>cat</code> <code>/opt/nginx/logs/error</code><code>.log</code>

<code>ngx_http_fastdfs_process_init pid=14667</code>

<code>[2015-08-28 03:46:32] INFO - local_host_ip_count: 2,  127.0.0.1  10.1.10.194</code>

<code>[2015-08-28 03:46:32] INFO - fastdfs apache / nginx module v1.15, response_mode=proxy, base_path=</code><code>/opt/fastdfs/storage</code><code>, url_have_group_name=1, group_name=group1, storage_server_port=23000, path_count=1, store_path0=</code><code>/home/yuqing/fastdfs</code><code>, connect_timeout=2, network_timeout=30, tracker_server_count=1, if_alias_prefix=, local_host_ip_count=2, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0, load_fdfs_parameters_from_tracker=1, storage_sync_file_max_delay=86400s, use_storage_id=0, storage server </code><code>id</code> <code>count=0, flv_support=1, flv_extension=flv</code>

<code>12)設定開機啟動(serverB和serverC)</code>

<code>echo</code> <code>"/usr/local/sbin/nginx"</code> <code>&gt;&gt; </code><code>/etc/rc</code><code>.</code><code>local</code>

<code>13)通路nginx(serverB和serverC)</code>

<code>curl 10.1.10.185:80</code>

<code>&lt;!DOCTYPE html&gt;</code>

<code>&lt;html&gt;</code>

<code>&lt;</code><code>head</code><code>&gt;</code>

<code>&lt;title&gt;Welcome to nginx!&lt;</code><code>/title</code><code>&gt;</code>

<code>&lt;style&gt;</code>

<code>    </code><code>body {</code>

<code>        </code><code>width: 35em;</code>

<code>        </code><code>margin: 0 auto;</code>

<code>        </code><code>font-family: Tahoma, Verdana, Arial, sans-serif;</code>

<code>    </code><code>}</code>

<code>&lt;</code><code>/style</code><code>&gt;</code>

<code>&lt;</code><code>/head</code><code>&gt;</code>

<code>&lt;body&gt;</code>

<code>&lt;h1&gt;Welcome to nginx!&lt;</code><code>/h1</code><code>&gt;</code>

<code>&lt;p&gt;If you see this page, the nginx web server is successfully installed and</code>

<code>working. Further configuration is required.&lt;</code><code>/p</code><code>&gt;</code>

<code>&lt;p&gt;For online documentation and support please refer to</code>

<code>&lt;a href=</code><code>"http://nginx.org/"</code><code>&gt;nginx.org&lt;</code><code>/a</code><code>&gt;.&lt;br/&gt;</code>

<code>Commercial support is available at</code>

<code>&lt;a href=</code><code>"http://nginx.com/"</code><code>&gt;nginx.com&lt;</code><code>/a</code><code>&gt;.&lt;</code><code>/p</code><code>&gt;</code>

<code>&lt;p&gt;&lt;em&gt;Thank you </code><code>for</code> <code>using nginx.&lt;</code><code>/em</code><code>&gt;&lt;</code><code>/p</code><code>&gt;</code>

<code>&lt;</code><code>/body</code><code>&gt;</code>

<code>&lt;</code><code>/html</code><code>&gt;</code>

<code>PS:有看到頁面資訊 說明配置都OK了</code>

<code>四、相關指令說明</code>

<code>fdfs_monitor                            </code><code>#檢視叢集情況</code>

<code>fdfs_crc32                              </code><code>#擷取檔案CRC </code>

<code>fdfs_delete_file                        </code><code>#删除檔案</code>

<code>fdfs_file_info                          </code><code>#檢視檔案屬性資訊</code>

<code>fdfs_download_file                      </code><code>#下載下傳檔案</code>

<code>fdfs_upload_file                        </code><code>#上傳檔案</code>

<code>fdfs_storaged                           </code><code>#啟storage服務</code>

<code>fdfs_trackerd                           </code><code>#啟tracker服務</code>

<code>五、測試</code>

<code>1、在tracker上的操作[作為client測試]</code>

<code>cp</code> <code>/etc/fdfs/client</code><code>.conf.sample </code><code>/etc/fdfs/client</code><code>.conf</code>

<code>2)修改配置</code>

<code>diff</code> <code>/etc/fdfs/client</code><code>.conf.sample </code><code>/etc/fdfs/client</code><code>.conf</code>

<code>10c10</code>

<code>&lt; base_path=</code><code>/home/yuqing/fastdfs</code>

<code>&gt; base_path=</code><code>/tmp</code>

<code>14c14</code>

<code>&lt; tracker_server=192.168.0.197:22122</code>

<code>&gt; tracker_server=10.1.10.117:22122</code>

<code>2、上傳檔案測試</code>

<code>[email protected]:~</code><code># fdfs_test /etc/fdfs/client.conf upload Chrysanthemum.jpg</code>

<code>This is FastDFS client </code><code>test</code> <code>program v5.07</code>

<code>Copyright (C) 2008, Happy Fish / YuQing</code>

<code>FastDFS may be copied only under the terms of the GNU General</code>

<code>Public License V3, </code><code>which</code> <code>may be found </code><code>in</code> <code>the FastDFS </code><code>source</code> <code>kit.</code>

<code>Please visit the FastDFS Home Page http:</code><code>//www</code><code>.csource.org/ </code>

<code>for</code> <code>more</code> <code>detail.</code>

<code>[2015-08-31 15:04:52] DEBUG - base_path=</code><code>/tmp</code><code>, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server </code><code>id</code> <code>count: 0</code>

<code>tracker_query_storage_store_list_without_group: </code>

<code>    </code><code>server 1. group_name=, ip_addr=10.1.10.185, port=23000</code>

<code>    </code><code>server 2. group_name=, ip_addr=10.1.10.194, port=23000</code>

<code>group_name=group1, ip_addr=10.1.10.194, port=23000</code>

<code>storage_upload_by_filename</code>

<code>group_name=group1, remote_filename=M00</code><code>/00/00/CgEKwlXj_JSAHsHYAA1rIuRd3Es813</code><code>.jpg</code>

<code>source</code> <code>ip address: 10.1.10.194</code>

<code>file</code> <code>timestamp=2015-08-31 15:04:52</code>

<code>file</code> <code>size=879394</code>

<code>file</code> <code>crc32=3831356491</code>

<code>example </code><code>file</code> <code>url: http:</code><code>//10</code><code>.1.10.194</code><code>/group1/M00/00/00/CgEKwlXj_JSAHsHYAA1rIuRd3Es813</code><code>.jpg</code>

<code>storage_upload_slave_by_filename</code>

<code>group_name=group1, remote_filename=M00</code><code>/00/00/CgEKwlXj_JSAHsHYAA1rIuRd3Es813_big</code><code>.jpg</code>

<code>example </code><code>file</code> <code>url: http:</code><code>//10</code><code>.1.10.194</code><code>/group1/M00/00/00/CgEKwlXj_JSAHsHYAA1rIuRd3Es813_big</code><code>.jpg</code>

<code>[email protected]:~</code><code># fdfs_test /etc/fdfs/client.conf upload Desert.jpg</code>

<code>[2015-08-31 15:04:59] DEBUG - base_path=</code><code>/tmp</code><code>, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server </code><code>id</code> <code>count: 0</code>

<code>group_name=group1, ip_addr=10.1.10.185, port=23000</code>

<code>group_name=group1, remote_filename=M00</code><code>/00/00/CgEKuVXj_JuAbUQnAAzodQCbVVc191</code><code>.jpg</code>

<code>source</code> <code>ip address: 10.1.10.185</code>

<code>file</code> <code>timestamp=2015-08-31 15:04:59</code>

<code>file</code> <code>size=845941</code>

<code>file</code> <code>crc32=10179927</code>

<code>example </code><code>file</code> <code>url: http:</code><code>//10</code><code>.1.10.185</code><code>/group1/M00/00/00/CgEKuVXj_JuAbUQnAAzodQCbVVc191</code><code>.jpg</code>

<code>group_name=group1, remote_filename=M00</code><code>/00/00/CgEKuVXj_JuAbUQnAAzodQCbVVc191_big</code><code>.jpg</code>

<code>example </code><code>file</code> <code>url: http:</code><code>//10</code><code>.1.10.185</code><code>/group1/M00/00/00/CgEKuVXj_JuAbUQnAAzodQCbVVc191_big</code><code>.jpg</code>

<code>3、windows上通路位址測試效果</code>

<a href="http://s3.51cto.com/wyfs02/M02/72/79/wKiom1XkUHXgp6frAA2Jx6c9CAQ268.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/72/76/wKioL1XkUpbxud-QAA2RDkCxy_Q656.jpg" target="_blank"></a>

<code>六、在ServerA上安裝nginx(前端提供負載均衡)并進行測試</code>

<code>1、建立nginx使用者</code>

<code>2、下載下傳nginx</code>

<code>3、解壓</code>

<code>4、編譯三部曲</code>

<code>.</code><code>/configure</code> <code>--prefix=</code><code>/opt/nginx</code> <code>--user=nginx --group=nginx --with-http_ssl_module</code>

<code>5、為了友善 弄個軟連結</code>

<code>6、備份配置</code>

<code>diff</code> <code>/opt/nginx/conf/nginx</code><code>.conf </code><code>/opt/nginx/conf/nginx</code><code>.conf.bak</code>

<code>35,38c34</code>

<code>&lt; upstream group1{</code>

<code>&lt; server 10.1.10.185:80;</code>

<code>&lt; server 10.1.10.194:80;</code>

<code>&lt; }</code>

<code>40,41c36,37</code>

<code>&lt;         listen       10.1.10.117:80;</code>

<code>&lt;         server_name  10.1.10.117;</code>

<code>47c43</code>

<code>50d45</code>

<code>&lt;             proxy_pass  http:</code><code>//group1</code><code>;</code>

<code>8、啟動服務</code>

<code>nginx</code>

<code>9、設定開機啟動</code>

<code>10、檢視端口和程序</code>

<code>ps</code> <code>-ef |</code><code>grep</code> <code>nginx</code>

<code>root      14627      1  0 15:09 ?        00:00:00 nginx: master process nginx</code>

<code>nginx     14628  14627  0 15:09 ?        00:00:00 nginx: worker process</code>

<code>tcp        0      0 10.1.10.117:80          0.0.0.0:*               LISTEN      16986</code><code>/nginx</code><code>: master</code>

<code>11、再次上傳圖檔測試</code>

<code>[email protected]:~</code><code># fdfs_test /etc/fdfs/client.conf upload Tulips.jpg</code>

<code>[2015-08-31 16:02:17] DEBUG - base_path=</code><code>/tmp</code><code>, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server </code><code>id</code> <code>count: 0</code>

<code>group_name=group1, remote_filename=M00</code><code>/00/00/CgEKuVXkCgmAfHn_AAl5WLU-YRY278</code><code>.jpg</code>

<code>file</code> <code>timestamp=2015-08-31 16:02:17</code>

<code>file</code> <code>size=620888</code>

<code>file</code> <code>crc32=3040764182</code>

<code>example </code><code>file</code> <code>url: http:</code><code>//10</code><code>.1.10.185</code><code>/group1/M00/00/00/CgEKuVXkCgmAfHn_AAl5WLU-YRY278</code><code>.jpg</code>

<code>group_name=group1, remote_filename=M00</code><code>/00/00/CgEKuVXkCgmAfHn_AAl5WLU-YRY278_big</code><code>.jpg</code>

<code>example </code><code>file</code> <code>url: http:</code><code>//10</code><code>.1.10.185</code><code>/group1/M00/00/00/CgEKuVXkCgmAfHn_AAl5WLU-YRY278_big</code><code>.jpg</code>

<a href="http://s3.51cto.com/wyfs02/M00/72/79/wKiom1XkUJeDOw_gAAuwNkaSKtI421.jpg" target="_blank"></a>

<code>七、參考文章</code>

<code>http:</code><code>//www</code><code>.simlinux.com</code><code>/books/FastDFS</code><code>.pdf</code>

本文轉自 xdoujiang 51CTO部落格,原文連結:http://blog.51cto.com/7938217/1690273,如需轉載請自行聯系原作者

繼續閱讀