Thứ Sáu, 10 tháng 11, 2017

Git completion

Sử dụng git completion trên ubuntu 16.04

1. Tải file git-completion.bash

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
xem nội dung file tại đây

2. Thêm nội dung sau vào file ~/.bashrc

1
2
3
if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi


Thứ Hai, 30 tháng 10, 2017

Đọc output lệnh ps aux

Bài viết được thực hiện trên
$ lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 16.04.3 LTSRelease: 16.04Codename: xenial
Ps là lệnh báo cáo về thông tin ( từ chuẩn là snapshot) của các process đang chạy trên máy.
Bài viết khai thác về cách đọc output của lệnh ps aux.

Lệnh này thường được dùng khi muốn kiểm tra memory do process đó tiêu thụ

ví dụ trên máy mình
$ ps aux | head
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 119808  1928 ?        Ss   10:02   0:01 /sbin/init splash
root         2  0.0  0.0      0     0 ?        S    10:02   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<   10:02   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S    10:02   0:00 [ksoftirqd/0]
Một số thông số cần chú ý khi đọc lệnh:
1. USER: user chạy process đó.
2. PID: process ID.
3. %CPU: là % CPU được sử dụng cho process khi nó đang chạy. Nhìn vào thông số này để kiểm tra xem process có chiếm nhiều CPU hay không.
4. %MEM: % memory process sử dụng khi chạy
5. VSZ: lượng memory process sử dụng bao gồm tất cả memory liên quan đến process như shared, cached memory (KB).
6. RSS: lượng memory được sử dụng cho riêng process đó, không bao gồm cached memory hay shared memory (là thông số used memory) (KB).
7. COMMAND: các argument được sư dụng trong process

Thứ Ba, 15 tháng 8, 2017

Traefik basic

Traefik được sử dụng như một reverse proxy và load balance.
Trong docker, Traefik có thể sử dụng để load balance HTTP traffic giữa các container. Traefik hỗ trợ nhiều backend provider để tự động config environment như ports, protocol... Khi các services hoặc container được add/remove , traefik sẽ thay đổi (reshape) traffic cho phù hợp với những sự thay đổi này.

Image result for traefik tutorial


Một vài điểm lưu ý:

1. Một ví dụ để tạo load balance với docker-compose file:



traefik:
image: traefik
command: --web --docker --docker.domain=docker.localhost --logLevel=DEBUG
ports:
- "80:80"
- "8080:8080"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /dev/null:/traefik.toml


Load balancer được config để listen trên port 80 (http) và 443 (https) và một dashboard trên port 8080.

Việc sử dụng docker.sock cho phep traefik lắng nghe Docker daemon, và cập nhật các sự thay đổi như add/remove/restart các services, container ... Ngoài ra nó còn cho phép traefik tìm  metadata về các container, ví dụ như tên của process chạy chúng.

 2. Các labels:

traefik.frontend.rule: assign cả internal và public domains để truy cập vào service/container.
traefik.backend: backend được sử dụng cho services
traefik.port: register port cho service.
traefik.protocol: xác dịnh protocol, default sử dụng http protocol.
traefik.docker.network: set network được sử dụng cho các kết nôí tới container.

Thứ Hai, 31 tháng 7, 2017

[Docker] Ghi log vào stdout và stderr

Trong docker, thông thường sẽ rất ít khi vào các container để check log. Vì vậy, log thường được redirect tới stdout hoặc stderr.

Nhưng hiện tại, docker có một bug, một non-root user không thể ghi log vào stdout hoặc stderr.
https://github.com/moby/moby/issues/6880#issuecomment-220637337

Giải pháp:
- Tạo một named pipe, set owner.
mkfifo -m 600 /tmp/logpipechown user:user /tmp/logpipe

- Chuyển hướng tất cả những gì được ghi vào named pipe đã tạo tới stdout (hoặc stderr)

cat <> /tmp/logpipe 2>&1 & (*)
Trong trường hợp (*) này, tất cả log sẽ được redirect sang stdout. Nếu muốn log được redirect sang stderr, dùng:
cat <> /tmp/logpipe 1>&2 &

Thứ Năm, 9 tháng 3, 2017

proxy - Forward Proxy - Reverse Proxy

Bài viết tổng hợp một số khái niệm về proxy

Proxy

Proxy trong tiếng anh nghĩa là "người được ủy quyền".

Proxy là một internet server:
- Đứng giữa server và client
- Kiểm soát thông tin giữa client và server.
Cách thức hoạt đông: Tất cả các requests giữa client và server đều qua proxy. Trên proxy có định nghĩa sẵn các rules.
- Các request từ client tới server đều qua proxy, proxy kiểm tra, nếu không vi phạm các rules thì sẽ được chuyển đến server.
- Ngược lại, các response từ server, proxy sẽ kiểm tra và nếu không vi phạm các rules thì sẽ được trả về client.

Thứ Tư, 4 tháng 1, 2017

Cung cấp SSL certificate miễn phí với letsencrypt và acmetool

Bài viết được thực hiện trên:
thanhnguyen@thanhnguyen:~$ lsb_release -r
Release: 14.04
Letsencrypt là một Certificate Authority (CA) cung cấp TLS/SSL certificate  và enable encrypted HTTPs cho một web server. Ưu điểm của Letsencript là đơn giản, dễ sử dụng và đặc biệt, nó cung cấp các TLS/SSL certificate hoàn toàn miễn phí :D

Tìm hiểu sâu hơn về letsencrypt tại
https://letsencrypt.org/docs/

TLS/SSL certificate được cung cấp bởi letsencrypt chỉ sử dụng được trong một thời gian ngắn và sẽ hết hiệu lực trong vòng 90 ngày. Vì vậy, cần có một phương pháp để cấp mới certificate cho website một cách tự động.
Bài viết này hướng dẫn cấp mới certificate bằng cách sử dụng acmetool. Cần chú ý rằng, đây không phải là một offical tool client của letsencrypt, vì acmetool chỉ tạo các SSL keys và certs chứ không tự động reconfigure lại các website được nhận (official enscrypt client tools có làm điều này).