'분류 전체보기'에 해당하는 글 558건

지난번 kubernetes 에서 mongodb replica set 세팅 하는 방법을 정리했다. ( https://blog.1day1.org/598 )

그런데, 이제 mongo db 내부에서 replica set 을 설정한다.

처음에는 다음처럼 나온다.

rs.status()
{
	"ok" : 0,
	"errmsg" : "no replset config has been received",
	"code" : 94,
	"codeName" : "NotYetInitialized"
}

리플리카 셋을 설정한다.

config = {_id: "MainRepSet", version: 1, members: [
       { _id: 0, host : "mongod-0.mongodb-service:27017" },
       { _id: 1, host : "mongod-1.mongodb-service:27017" },
       { _id: 2, host : "mongod-2.mongodb-service:27017" },
       { _id: 3, host : "mongod-3.mongodb-service:27017" }
 ]}
 rs.initiate(config)

초기 설정 후 관리계정을 만들어 준다.

use admin
db.createUser({user:"admin",pwd:passwordPrompt(),roles:[{role:"root",db:"admin"}]})

(사용은)
db.getSiblingDB('admin').auth("admin", passwordPrompt())

정상 세팅은 다음 처럼 나온다.

더보기

MainRepSet:PRIMARY> rs.status()
{
"set" : "MainRepSet",
"date" : ISODate("2020-02-20T08:39:06.434Z"),
"myState" : 1,
"term" : NumberLong(1),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"heartbeatIntervalMillis" : NumberLong(2000),
"majorityVoteCount" : 3,
"writeMajorityCount" : 3,
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1582187942, 1),
"t" : NumberLong(1)
},
"lastCommittedWallTime" : ISODate("2020-02-20T08:39:02.691Z"),
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1582187942, 1),
"t" : NumberLong(1)
},
"readConcernMajorityWallTime" : ISODate("2020-02-20T08:39:02.691Z"),
"appliedOpTime" : {
"ts" : Timestamp(1582187942, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1582187942, 1),
"t" : NumberLong(1)
},
"lastAppliedWallTime" : ISODate("2020-02-20T08:39:02.691Z"),
"lastDurableWallTime" : ISODate("2020-02-20T08:39:02.691Z")
},
"lastStableRecoveryTimestamp" : Timestamp(1582187912, 3),
"lastStableCheckpointTimestamp" : Timestamp(1582187912, 3),
"electionCandidateMetrics" : {
"lastElectionReason" : "electionTimeout",
"lastElectionDate" : ISODate("2020-02-20T08:38:32.108Z"),
"electionTerm" : NumberLong(1),
"lastCommittedOpTimeAtElection" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"lastSeenOpTimeAtElection" : {
"ts" : Timestamp(1582187901, 1),
"t" : NumberLong(-1)
},
"numVotesNeeded" : 3,
"priorityAtElection" : 1,
"electionTimeoutMillis" : NumberLong(10000),
"numCatchUpOps" : NumberLong(0),
"newTermStartDate" : ISODate("2020-02-20T08:38:32.690Z"),
"wMajorityWriteAvailabilityDate" : ISODate("2020-02-20T08:38:33.290Z")
},
"members" : [
{
"_id" : 0,
"name" : "mongod-0.mongodb-service:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 805,
"optime" : {
"ts" : Timestamp(1582187942, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-02-20T08:39:02Z"),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"infoMessage" : "could not find member to sync from",
"electionTime" : Timestamp(1582187912, 1),
"electionDate" : ISODate("2020-02-20T08:38:32Z"),
"configVersion" : 1,
"self" : true,
"lastHeartbeatMessage" : ""
},
{
"_id" : 1,
"name" : "mongod-1.mongodb-service:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 44,
"optime" : {
"ts" : Timestamp(1582187942, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1582187942, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-02-20T08:39:02Z"),
"optimeDurableDate" : ISODate("2020-02-20T08:39:02Z"),
"lastHeartbeat" : ISODate("2020-02-20T08:39:06.193Z"),
"lastHeartbeatRecv" : ISODate("2020-02-20T08:39:05.256Z"),
"pingMs" : NumberLong(1),
"lastHeartbeatMessage" : "",
"syncingTo" : "mongod-0.mongodb-service:27017",
"syncSourceHost" : "mongod-0.mongodb-service:27017",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 1
},
{
"_id" : 2,
"name" : "mongod-2.mongodb-service:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 44,
"optime" : {
"ts" : Timestamp(1582187942, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1582187942, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-02-20T08:39:02Z"),
"optimeDurableDate" : ISODate("2020-02-20T08:39:02Z"),
"lastHeartbeat" : ISODate("2020-02-20T08:39:06.187Z"),
"lastHeartbeatRecv" : ISODate("2020-02-20T08:39:05.581Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncingTo" : "mongod-0.mongodb-service:27017",
"syncSourceHost" : "mongod-0.mongodb-service:27017",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 1
},
{
"_id" : 3,
"name" : "mongod-3.mongodb-service:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 44,
"optime" : {
"ts" : Timestamp(1582187942, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1582187942, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-02-20T08:39:02Z"),
"optimeDurableDate" : ISODate("2020-02-20T08:39:02Z"),
"lastHeartbeat" : ISODate("2020-02-20T08:39:06.201Z"),
"lastHeartbeatRecv" : ISODate("2020-02-20T08:39:05.256Z"),
"pingMs" : NumberLong(1),
"lastHeartbeatMessage" : "",
"syncingTo" : "mongod-0.mongodb-service:27017",
"syncSourceHost" : "mongod-0.mongodb-service:27017",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 1
}
],
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1582187942, 1),
"signature" : {
"hash" : BinData(0,"pHhOTNJaI3y8hvPOpgcOs9zJ7I8="),
"keyId" : NumberLong("6795445338166525955")
}
},
"operationTime" : Timestamp(1582187942, 1)
}


이후에 primary 에서 데이터를 등록하면 secondary 에 반영된다.

kubernetes 에서  delete / apply 등으로 새로 세팅하거나 했을때 기존 설정이 정상 동작 하지 않는 경우.
Primary 가 없거나 하는 경우.

Our replica set config is invalid or we are not a member of it

설정을 재등록(?) 해준다. 

conf = rs.conf()
rs.reconfig(conf, {force:true})

 


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

몽고디비를 서비스에 도입해보려고 테스트 중이다.

여러가지 설치 방법이 있지만, 쿠버네티스 를 활용해서 하려한다.

1. microk8s 를 설치한다.
https://microk8s.io/docs/ 설치방법은 너무 쉽다.
몇몇 서비스를 활성화 시킨다.

microk8s.enable dns storage

 

microk8s.kubectl 은 링크걸어두면 편하다.

sudo ln -s /snap/bin/microk8s.kubectl /snap/bin/kubectl

 

2. 몽고디비 replica set 설정을 사용한다.
https://maruftuhin.com/blog/mongodb-replica-set-on-kubernetes/ 의 설정을 참조

3. 설정을 사용해 몽고디비를 가동한다.

kubectl apply -f replica-sets/mongodb-rc.yaml

다음과 같은 명령으로 상황을 모니터링 하면 좋다.

kubectl get all -o wide
kubectl get pvc -o wide
kubectl get nodes -o wide

정상적으로 실행되지 않고, pending 으로 시간이 걸린다면, 삭제했다가 다시 실행해본다.

(전체 삭제)
kubectl delete -f replica-sets/mongodb-rc.yaml

(pvc 삭제)
kubectl delete pvc mongodb-persistent-storage-claim-mongod-0

 

정상적이라면 다음처럼 나온다.

kubectl get pods -o wide

NAME       READY   STATUS    RESTARTS   AGE     IP            NODE            
mongod-0   1/1     Running   0          6m45s   10.1.32.109   192.168.77.20   
mongod-1   1/1     Running   0          6m43s   10.1.70.10    kube-mk8s       
mongod-2   1/1     Running   0          6m42s   10.1.32.110   192.168.77.20   
mongod-3   1/1     Running   0          6m41s   10.1.70.11    kube-mk8s       

 

4. mongo 접속하여 replica set 설정한다. (세부 설정은 별도로 정리 예정)

(kube => pod 접속)
kubectl exec -ti mongod-0 -c mongod-container bash

(pod 내에서 mongo console 실행)
mongo

 

해당 replica set 의 몽고 서버에 접속하기 위해 dns 설정이 잘 되었는지 확인해본다.

kubectl apply -f https://k8s.io/examples/admin/dns/busybox.yaml
kubectl exec -ti busybox -- nslookup mongod-0.mongodb-service

설정을 확인해서 정상적으로 pod IP 가 나와야 한다.

이런식으로 나오면 실패.

Server:    127.0.0.53
Address 1: 127.0.0.53

nslookup: can't resolve 'mongod-0.mongodb-service'

아래처럼 나와야 정상.

Server:    10.152.183.10
Address 1: 10.152.183.10 kube-dns.kube-system.svc.cluster.local

Name:      mongod-0.mongodb-service
Address 1: 10.1.32.109 mongod-0.mongodb-service.default.svc.cluster.local

 


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

쿠버네티스 를 사용하기 위해 알아보고 있다. (이미 대세가 된지 오래)

단순 개발환경에 적용하기 보다. 실무에 적용하기 위해 연습/학습 단계 부터 단계적으로 해본다.

현재로서는 다음 단계로 진행예정.

1. microk8s (우분투 기반) - 로컬
2. kubeadm , kubespray 등을 이용한 세팅 - (클라우드 or 실서버)
3. helm 등의 패키지(?) 개념의 설치/세팅

아직 용어도 익숙치 않아서 시간이 걸리겠지만, 하나씩 해보면서 목표를 이뤄나간다.

장비도 노트북(그램) , 서버(PC) , 클라우드(D.O , GCP) 등 여러환경에서 해본다.

 


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

LG 그램을 사용중이다. 윈도우가 기본 설치가 되어 있지만, 개발에 필요해서 우분투를 설치해서 사용하려 한다.

USB 부팅(설치) 디스크를 만들고 부팅을 시도 했는데. 다음과 같은 에러가 나면서 부팅이 되지 않는다.

Failed to open \EFI\BOOT\NULL - Not Found
Faild to load image \EFI\BOOT\NULL : Not Found
start_image() returned Not Found

위와 같은 에러가 나는 경우. USB 설치 디스크의 해당 위치를 보면

grubx64.efi
mmx64.efi
bootx64.efi

등의 파일이 있는데.

난 grubx64.efi 를 복사해서 NULL 파일로 이름을 바꿔줬다. (NULL.efi 가 아닌 그냥 NULL )

다시 재부팅을 해보니 정상적으로 부팅화면으로 넘어갔다.

ps. 여러가지 그램 바이오스 세팅을 바꾸는 방법이 구글링 하면 나오는데.
난 위 방법으로 했다. (secure boot : disable 등 몇가지는 설정했다.)


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

예전 부터 가상서버를 써왔다. 국내/해외. 본격적으로 써온지도 5년이 넘었다.
(특히 해외업체들의 서비스가 괜찮아 많이 쓰고 있다. https://blog.1day1.org/564 에 소개를 하기도 했다)

국내업체들은 아직 불편한 부분이 많다.
그 사이 AWS 도 국내 서비스도 하고 있다.

이미 AWS 쪽은 대세가 된 kubernetes , 위 업체중 디지털오션 만 공식(?) 지원하고 있다. 서비스로서 지원.

디지털오션 - 쿠버네티스 서비스

벌쳐 / 리노드는 아직 공식 지원하지는 않는다. 별개로 kubernetes 설치해서 사용할 수는 있다.

디지털오션은 서비스로 지원해서, 쿠버네티스 클러스터를 구성하기 쉽도록 했다.(마스터는 별도 비용을 받지 않는 듯 하다)
노드 비용만 계산이 되는 듯 하다.(10$ 플랜부터 사용가능)

런칭한지는 좀 되었지만, 아직 실 사용은 해보지 않아 언급하진 않았다.
조만간 서비스를 쿠버네티스 기반으로 옮길것을 검토중이라 정리 차원에서 글을 쓴다.

도입하면서 나오는 이슈들을 정리할 생각이다.


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

사용중인 시스템에 HDD 관련 커널에러가 발생하였다.

보통 여러가지 이유가 많지만, 이런 에러가 생기면 그냥 AS 보낸다.

그런데, 이번에는 디스크 관리를 보니 배드섹터 1 개 라고 나온다. 애매하네...
당장 시스템 교체할 하드가 마땅치 않아, AS 보내기전 잠시라도 계속 사용해야 하는 상황.

배드섹터를 기록(?)해서 에러가 발생하지 않도록 하고자 한다.

커널 에러 메세지는 이런식이다. (에러 종류에 따라 , 메시지가 다르다 )

[348303.307873] ata4: EH complete
[348305.814497] ata4.00: exception Emask 0x0 SAct 0x1000000 SErr 0x0 action 0x0
[348305.814503] ata4.00: irq_stat 0x40000008
[348305.814508] ata4.00: failed command: READ FPDMA QUEUED
[348305.814517] ata4.00: cmd 60/08:c0:78:3b:76/00:00:31:01:00/40 tag 24 ncq 4096 in
                         res 41/40:00:78:3b:76/00:00:31:01:00/40 Emask 0x409 (media error) <F>
[348305.814521] ata4.00: status: { DRDY ERR }
[348305.814524] ata4.00: error: { UNC }
[348305.815611] ata4.00: configured for UDMA/133
[348305.815625] sd 3:0:0:0: [sdc] tag#24 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[348305.815630] sd 3:0:0:0: [sdc] tag#24 Sense Key : Medium Error [current] [descriptor] 
[348305.815635] sd 3:0:0:0: [sdc] tag#24 Add. Sense: Unrecovered read error - auto reallocate failed
[348305.815639] sd 3:0:0:0: [sdc] tag#24 CDB: Read(16) 88 00 00 00 00 01 31 76 3b 78 00 00 00 08 00 00
[348305.815643] blk_update_request: I/O error, dev sdc, sector 5124799352

눈에 띄는 부분은 마지막줄.

blk_update_request: I/O error, dev sdc, sector 5124799352

배드 섹터가 생긴 것으로 보인다(다른 에러로 인해 나오는 경우도 있을 수 있을 듯 하다 - 입출력시 에러이니 다양한 원인이 있을 수 있음)


보통의 절차는 badblocks 로 배드섹터 위치를 찾고, fsck 로 배드섹터 표시를 해서 디스크사용시 해당 섹터를 건드리지 않도록 한다.

badblocks -v /dev/sdc1 > badsectors.txt

위 처럼 배드섹터 위치를 찾는다 ( /dev/sdc1 등은 본인의 HDD 명칭으로 쓰면 된다)
오래걸린다 (디스크 크기가 크면 클수록)
검색 범위를 정할 수 있는지 모르겠다. 2930265542

그 다음은 배드섹터를 파일시스템에 기록(?) 한다.

fsck.ext4 -l badsectors.txt  /dev/sdc1

fsck 명령은 본인의 파일시스템에 맞게 적절하게 바꿔준다. (fsck.ext2 , fsck.ext3 등)

끝.

이게 영구적인 해결방법은 아닐 듯 하다. 배드섹터가 계속 생길 수 있으니, AS 보내기 전까지 버텨보자.


추가

badblocks 가 너무 오래 걸린다. (거의 2시간 넘게 했는데, 반도 못했다. 6시간 넘게 걸릴 듯 하다 - 하드디스크 속도에 따라 차이가 있을 듯 함. 해당 HDD 는 7200 rpm )

badblocks -v /dev/sdc1 > badsectors.txt
Checking blocks 0 to 2930265542
Checking for bad blocks (read-only test): ^C

Interrupted at block 1102688832

block 범위를 정해서 다시 해본다. ( 전체가 5860533168 이다. 대략 배드섹터 위치는 5124799352 )

Disk /dev/sdc: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt

위 처럼 한 블럭이 512 byte ( badblocks 의 기본값은 1024 - 그래서 0 to 2930265542 으로 나옴)
그런데, 512 로 하면 다음과 같은 메시지가 나온다.

badblocks: 정의한 자료형으로 쓰기엔 너무 큰 값 invalid end block (5860531087): must be 32-bit value

기본값 1024 로 해야겠다. 대신 뒤의 블럭을 반으로 나눠서 범위를 정해야 겠다. ( 2562399676 가 된다)
그러고 보니 기본값을 fsck 쪽과도 맞춰야 할까? 파일시스템마다 다를려나? ( 4096 이 기본값인가? 5124799352 x 0.125 = 640599919 이 된다.)

# badblocks -b 4096 -v /dev/sdc1 640600000 640590000 > badsectors.txt
Checking blocks 640590000 to 640600000
Checking for bad blocks (read-only test): done                                                 
Pass completed, 1 bad blocks found. (1/0/0 errors)
# cat badsectors.4096.txt 
640599663

뒤의 숫자는 640599919 의 대략 범위 위치를 {last block} {first block} ( 끝 / 시작 값을 약간 여유 잡고 지정한다 )
실제 블록 위치는 640599663 로 확인된다.

fsck 를 해보니.

# fsck.ext4 -l badsectors.4096.txt /dev/sdc1
e2fsck 1.42.13 (17-May-2015)
/dev/sdc1: Updating bad block inode.
Pass 1: Checking inodes, blocks, and sizes

Running additional passes to resolve blocks claimed by more than one inode...
Pass 1B: Rescanning for multiply-claimed blocks
Multiply-claimed block(s) in inode 110625949: 640599663
Pass 1C: Scanning directories for inodes with multiply-claimed blocks
Pass 1D: Reconciling multiply-claimed blocks
(There are 1 inodes containing multiply-claimed blocks.)

File { ================== 에러난 파일 =================== } (inode #110625949, mod time Wed Jun 26 16:35:07 2019) 
  has 1 multiply-claimed block(s), shared with 1 file(s):
    <The bad blocks inode> (inode #1, mod time Sat Jul 27 21:54:33 2019)
Clone multiply-claimed blocks<y>? yes
Error reading block 640599663 (Attempt to read block from filesystem resulted in short read).  에러 무시<y>? yes
강제로 덮어쓰기<y>? no
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
/lost+found not found.  Create<y>? no
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong for group #0 (23517, counted=23516).
Fix<y>? yes
Free blocks count wrong for group #19549 (65535, counted=0).
Fix<y>? yes

/dev/sdc1: ***** FILE SYSTEM WAS MODIFIED *****

/dev/sdc1: ********** WARNING: Filesystem still has errors **********

/dev/sdc1: 36792/183148544 files (0.0% non-contiguous), 632810807/732566385 blocks

위에서 Clone multiply-claimed blocks? yes => 이 부분을 그냥 n 로 건너뛰는게 좋다. 어차피 에러로 복사(clone) 실패 하는 듯 함.

일단 위와 같이 조치했는데, 잘 된 것인지는 좀더 체크해봐야 겠다. ( 특히 block 의 위치가 맞게 처리된 것인지... )


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

기존에 vmware 로 세팅되어 사용중이던 windows xp 를 다른 호스트머신 으로 옮기려고 한다.

그런데, vmware player 가 설치가 안된다. (windows 10 의 문제인지?)
계속 알아볼까 하다가, 그냥 virtualbox 로 옮기기로 해본다. (요즘 PC 성능이 좋아져 vm 의 성능차이가 없을 듯 하여)

예전(몇년전)에 virtualbox 를 vmware 로 해봤을때는 잘 안되었는데, 그 반대를 해보려는것.

결론은 잘 이전 된다.

그 설명을 정리해본다.


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

우분투 업그레이드를 했다. (간만에)

버전은 4.4.0-143-generic

Virtualbox 가  커널이 바뀌어서 모듈을 재 컴파일 해야 한다.

# sudo /sbin/rcvboxdrv setup

Stopping VirtualBox kernel modules ...done.

Uninstalling old VirtualBox DKMS kernel modules ...done.

Trying to register the VirtualBox kernel modules using DKMSERROR: Cannot create report: [Errno 17] File exists: '/var/crash/virtualbox-5.0.0.crash'

Error! Bad return status for module build on kernel: 4.4.0-143-generic (x86_64)

Consult /var/lib/dkms/vboxhost/5.0.40/build/make.log for more information.

 ...failed!

  (Failed, trying without DKMS)

Recompiling VirtualBox kernel modules ...failed!

  (Look at /var/log/vbox-install.log to find out what went wrong)

에러가 난다.  Virtualbox 특정 버전만 그런것인가? ( 5.0.40 )


일단 커널 버전을 내렸다. 4.4.0-143 은 걸러야 겠다.


ps. 다른 서버 4.4.0-142 버전은 괜찮은 것 같다.

필요하면 설치

apt-get install linux-image-4.4.0-142-generic


[추가 - 03/21]

새버전 4.4.0-144 버전이 올라와서 해보니, 동일 이슈.


[추가-04/11]

새버전 4.4.0-146 까지도 나왔는데, 동일

virtualbox-5.2 / virtualbox-6.0 도 해봐도 에러.

https://askubuntu.com/questions/1126721/4-4-0-143-generic-upgrade-16-04-vmware-no-loger-working/1126950

=> 모듈 소스를 수정해서 조치를 해야할 듯 하다. (아직 안 해봄)  => 이건 vmware 기준 소스 수정


[추가-04/16]

virtualbox 의 vboxdrv 쪽의 소스를 수정하는 방법

virtualbox 6.0.4 를 기준으로 설명 ( 커널 버전은 4.4.0-146 으로 설명)

참조 - /usr/src/linux-headers-4.4.0-146-generic/include/linux/mm.h 의 get_user_pages 의 인수가 다른 문제

vboxdrv 의 소스를 수정해준다.

/usr/src/vboxhost-6.0.4/vboxdrv/r0drv/linux/memobj-r0drv-linux.c 에서 get_users_pages 부분을 수정해주면 된다.

1122                                 /*fWrite,*/                 /* Write to memory. */

virtualbox 버전에 따라 소스 라인 위치는 다를 수 있다.


수정 후  /sbin/vboxconfig  로 다시 모듈을 만들어 준다.

정상 동작까지는 확인 했는데, 이 방법은 위험성이 있으니, 사용하면서 이상현상이 있으면 추가로 글을 남기도록 한다.



WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

맥에서 npm (node) 를 어떤 방법으로 설치하는게 좋은가?

보통 homebrew , nvm 을 주로 쓰는 듯 하다.

맥용 기본 패키지 매니저 같은 것은 없나? ( 우분투의 apt 같은 ..)


https://nodejs.org/ 에서 다운로드해서 설치해도 되는듯 하다.


# 일단 nvm 을 시도해본다.

1. 설치 : https://github.com/creationix/nvm

2. curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

3. 위 명령으로 설치하려고 하니 git 이 없다고 한다. xcode 설치하겠는지 물어본다. (일단 설치 진행.)

4. 다시 위 명령으로 실행. 설치OK. 터미널을 재실행해 보면 된다. (nvm --version 체크)


# node(npm) 을 설치한다.

1. nvm install node   ( nvm install stable 도 동일한 듯 하다)

2. npm install -g @vue/cli  => 최종 하려던 것 - 잘 설치된다.


# vue cli 3 버전 특징.

vue cli ui 를 지원한다. 

$ vue ui  

위 명령을 내리면 브라우저가 뜨면서 설정을 UI 로 할 수 있다. ( 기존  명령창에서 하던 것을 브라우저로 가능)
> 참조 : https://medium.com/@changjoopark/vue-cli-ui-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-9ef31fea4f40




WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

일본 아마존 상품을 체크중이다.



쓸만한, 뽐뿌 가 될만한 제품을 블로그에 올릴 생각이다.




affiliate 가입을 해보는데, 계속 잘린다.

왜 그럴까? 


개인블로그라서 그런가?

좀더 체크해서, 원인을 찾아봐야 겠다.



WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

딱히 돈이 남아돌아서 투자를 알아본 것은 아니었다.

P2P 투자도 그렇고, 암호화폐 투자도 그렇고 요즘 어떻게 돌아가는지 개념을 알아보자는 차원이었다.

(일단 뭐 투자할 돈이 없어서 ㅜㅜ )


[암호화폐 투자]

예전 10여년전이던가 아니 더 되었던가. 주식을 소액투자 해봤던 적이 있다.

요즘 가상화폐(암호화폐) 소액투자를 해보면서 비슷한 감정(?)을 느낀다.

신경이 많이 쓰이는 투자방법이다.  나에겐 좀 안 맞는다.(심장이 쫄깃해진다. 오래 못산다.)

그냥 적금처럼 넣어놓고 신경 안 쓰면 좋겠는데, 물론 그런식으로 할 수 있지만 맘이 그렇게 하기 쉽지 않다.


투자방식도 다양각색 - 업비트, 바이낸스 등 거래소등을 활용한 트레이딩.

POW, POS 등의 채굴을 통한 코인 획득.

블록체인 기반 사업을 위한 초기자본 모집하는 ICO 방식.


나는 암호화폐 트레이딩 보다는 주로 블록체인의 기술적인 관점에서 파악을 해보려고 하고 있다.

그래서 비트코인은 크게 관심이 없다. 블록체인 2세대(?)에 속하는 이더리움 , 네오 , 퀀텀 같은 플랫폼형 코인에 관심이 간다.

그래서 관련 플랫폼을 활용한 ICO 도 몇번 해봤다.(물론 소액)

이익보면 좋고, 안 되도 뭐... (속이 쓰리긴 하겠지만)


[P2P 투자]

가상화폐 투자보다는 좀더 안정(?)적인 방식은 P2P 투자인 듯 하다. 내 성향에도 딱 맞는 것 같다.

세팅 해놓고 신경 안 쓸수 있다.


여러 업체가 있겠지만, 써본 토스 와 렌딧이 마음에 든다.

토스는 원래 간편송금이 핵심인데, 부가(?)서비스로 부동산 소액투자, P2P투자(8퍼센트) 등이 있다. ( 펀드도 있는데, 내 성향이 아니라서 패스)

모바일 서비스 기반으로 투자 접근성이 편하다. 금액도 무리하지 않게 상한선이 있다.(투자 업체당 천만원)


렌딧도 P2P투자 인데, 토스의 8퍼센트 보다는 마음에 든다. ( 다만, 모바일 앱이 없는게 흠)

렛딧 추천코드 링크이다. ( https://goo.gl/tMaQ5F - 기승전 추천코드 )

추천코드 타고 가기 싫으면 그냥 https://lendit.co.kr 으로 가서 가입/투자 하시면 됩니다.


적금 넣는 대신 소액을 꾸준히 투자하기 좋은 것 같다. 수익률도 만족할 정도. (암호화폐 투자는 수익률은 좋지만 고위험)


투자시 고려할 것은 감당할 수 있는 범위내의 자금만 투입하라는 것.( 전부 없어도 지장이 없을정도 금액 )


3월 2일 추가 1)  2월 27일자로 투자금이 2천만원 으로 상향 조정되었다. 이쪽 계통으로 투자금이 몰리고 있다는 증거이려나? )

3월 2일 추가 2) 8퍼센트 쪽 웹버전도 괜찮다. 가입하면 토스쪽 투자내역을 세부적으로 볼 수 있다.  https://8percent.kr/



WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

ubuntu 에서 squid3 설정.

- 설정은 간단하다.

- curl 을 이용해 해당 proxy 서버를 사용할때 주의점.


# 설치

apt-get install squid3

끝. 쉽다.


# 설정

/etc/squid3/squid.conf 을 설정

(원래 파일은 복사하고, 새로 생성한다)

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT


# digest

auth_param digest program /usr/lib/squid3/digest_file_auth /etc/squid3/squid3.digest.passwd

auth_param digest realm proxy

acl sq_digest proxy_auth REQUIRED

http_access allow sq_digest


# basic

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/squid3.basic.passwd

auth_param basic realm proxy

acl sq_basic proxy_auth REQUIRED

http_access allow sq_basic


cache deny all


http_port 4128


#http_port 3128

coredump_dir /var/spool/squid3


refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern .               0       20%     4320

진한 부분이 추가한 부분이다. 기본파일에는 http_access 관련 설정이 있는데 삭제했다.


# 포트 변경

그리고 추천하는 부분은 기본포트인 3128 을 다른 포트로 바꾸길 권장한다.
언제나 그렇듯이 공격 대상이 될 수 있다. (ssh 도 필수로 바꾸는 것이 좋다. 22 -> 다른 포트)


# 캐시 비활성화

cache deny all 

캐시를 비활성화 했는데, 필요하면 삭제 또는 주석처리한다.


# 인증 모드

인증 모드는 digest 와 basic 이 있는데 설정은 위와 같다. 동시에 써도 되는지는 모르겠다.

암호파일 생성은 htpasswd / htdigest 를 사용한다.

사용법은

htpasswd -c /etc/squid3/squid3.basic.passwd {username}

htdigest -c /etc/squid3/squid3.digest.passwd proxy {username}

암호화는 digest 방식을 추천한다.


모두 설정이 완료되었으면 재시작해서 바뀐 설정을 적용한다.

service squid3 restart




# curl 에서는 다음처럼 사용한다. ( php 기준 설명 )

php curl 은 아쉽게도 digest 모드를 아직 지원안하는 듯 하다.

$proxyserv = '123.123.123.123:4128' ;
$proxyauth = 'username:password';


curl_setopt($ch, CURLOPT_PROXY, $proxyserv );

curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth );

위와 같이 써준다.

curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_DIGEST ); 

위 옵션이 되면 좋겠는데, 아쉽게도 현재는 안된다.( 현재는 CURLAUTH_BASIC , CURLAUTH_NTLM 만 지원)





WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

sublime text 를 쓰던 환경을 그대로 복사하거나 옮길경우

1. 계정폴더의 .config/sublime_text_3 폴더를 그대로 복사하면 된다.

해당 폴더 자체를 dropbox 등으로 동기화를 해도 될 듯 하지만,
충돌 가능성이 있으니 일단 배제.

2. license 파일은 그대로 복사해도 안된다. 다시 키 입력해서 새로 생성한다.





WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

그동안 digitalocean , linode , vultr 등을 주로 사용해왔다.

다른 가상서버 업체도 추가하기 위해 테스트 중이다.

기본조건은 다음과 같다.

1) 가격 저렴 ( 메모리 기준 512M = 5$ / 1G = 10$ 이하)
2) public IP 제공 (별도의 아이피)
3) 빠른 deploy (몇 분내에 배포가 되어야 한다)


# interserver

위 업체들보다는 사용이 좀 어려워보인다. 그래도 가격이 약 2$ (1G기준) 가량 저렴하다.

가입 : https://interserver.net/dock/vps-249279.html

가상서버는 시카고쪽 서버를 쓰는데, 속도도 괜찮은 듯 하다.
현재 KVM 의 8$ 짜리로 테스트 중이다. 1G 메모리


# mnx.io

UI 등이 최근 것 같다. ssh key 도 된다. 심플하다.
1G 10$ 로 가격대도 비슷하다.


# vpsie

테스트 중인 것중 제일 낫다. 가입도 간편하고.

가입 : https://my.vpsie.com/s/c3b6d839-246d-11e5-b45d-005056aadd24

지역도 - 뉴욕/버지니아/캘리포니아, 암스텔담 이 있다. 가격은 1G 8$ 로 괜찮다.

ssh key 등록이 가능해서 편하다.




[기타 관련글]

가상서버들 간단한 사용기 - 스마일서브 / 디지털오션 / 벌쳐(vultr) 등

괜찮은 VPS호스팅 발견 - vultr.com (20$ 프로모션)





WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

리노드쪽 서버가 이상이 생긴듯 하다. Fremont 지역이 그렇다.

정전이란다. ㅜㅜ

Update - We have received word from our colocation provider that there has been a power event in a section of the Fremont datacenter. The affected space is where a critical part of the datacenter network is located. The datacenter's electric provider is working with staff to restore power as soon as possible. Please watch this status page for further updates.
May 30, 02:25 UTC
Identified - We are aware of an issue within our Fremont datacenter and are investigating at this time. We will provide additional information as it becomes available.
May 30, 01:47 UTC

미국지역도 안정적이 아닌듯 하네.

사고인지. 흠.



WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

btrfs 를 쓰고 있는데, 뭔가 이상하다.

내가 잘못 쓰고 있는 것인지?

오늘 생긴일은 다음과 같다.

40G 정도 되는 파일을 원격지에서 전송받는 것이었다.

btrfs 를 쓰고있는 파티션이 80G 정도 남아있어서 괜찮겠다 싶어 전송하였다.

그런데, 30기가 정도 받고 나니 시스템이 다운된다.

이유가 뭘까?

혹시나 네트웍디바이스가 무리가 간것인가 다시 해봐도 동일현상.

그냥 ext4 의 다른 파티션으로 해보니 정상적이다.

btrfs 의 뭔가 특성이 있는 것인가?

커널로그를 살펴봤다.

 BTRFS error (device dm-6): block group 117604089856 has wrong amount of free space
 BTRFS error (device dm-6): failed to load free space cache for block group 117604089856

다음과 같은 메시지가 눈에 띈다.

df 로 확인한 용량과 BTRFS 의 용량계산은 차이가 있는 것인가?



아직 잘 모르겠다.

docker 쪽이 btrfs 를 쓰는듯 한데, 특성을 찾아봐야 겠다.



WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  1개가 달렸습니다.
  1. 안녕하세요! 해당 증상은 블록 그룹에 대한 여유 공간 캐시가 재할당 등으로 인해 적재되지 못한 경우로 보여지며, 마운트 옵션으로 clear_cache를 주고 재부팅 혹은 재부착하시면 될 것으로 보입니다~!
secret

LTS 버전이 14.04 가 나온지 1년이 넘었는데

아직 10.04 를 쓰고 있는 서버들이 있다. 바로 14.04 로 올리긴 이슈가 발생할 것 같아서
소극적으로 12.04 로 먼저 업그레이드 할 예정이다.
지원기간이 2017녀까지이니, 아직 여유가 있다.(10.04 는 지원기간이 지났다)

do-release-upgrade

로 업그레이드 하면 된다.


배포판 업그레이드는 지금까지 특이사항 없이 잘 했었다.
그런데, 이번에는 다음과 같은 에러를 보게 되었다.(특정서버에서 발생)

E:Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages

업그레이드 시작전에 체크하면서 오류가 발생한 듯 하다.


확인해보니 ibus-hangul 패키지가 깨진 듯 하다.

확인은 /var/log/dist-upgrade/apt.log 파일을 확인해본다.

Broken 패키지를 찾아보면 된다.

apt-get remove ibus-hangul

명령으로 제거를 한 후 다시 업그레이드 하니 진행이 잘 된다





WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

mysql 에서 mariadb 로 바꾼뒤 신규설치는 모두 mariadb 를 사용하고 있다.

내부 호스팅용으로 서버를 구축하는데, mariadb 를 설치하려 한다.

https://downloads.mariadb.org/mariadb/repositories/#mirror=kaist

를 사용.

기존에 하던 방식대로 하는데, 이번에는 뭔가 이상하다.

# apt-get install mariadb-server
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다      
상태 정보를 읽는 중입니다... 완료
몇몇 패키지를 설치할 수 없습니다. 요청한 상황이 불가능할 수도 있고,
불안정 배포판을 사용해서 일부 필요한 패키지를 아직 만들지 않았거나,
아직 Incoming에서 나오지 않은 경우일 수도 있습니다.
이 상황을 해결하는데 다음 정보가 도움이 될 수도 있습니다:

다음 패키지의 의존성이 맞지 않습니다:
 mariadb-server : 의존: mariadb-server-5.5 (= 5.5.42+maria-1~trusty) 하지만 %s 패키지를 설치하지 않을 것입니다
E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다.

이런식의 에러가 난다.

# apt-cache policy mariadb-server-5.5
mariadb-server-5.5:
  설치: (없음)
  후보: 5.5.42+maria-1~trusty
  버전 테이블:
     5.5.42+maria-1~trusty 0
        500 http://ftp.kaist.ac.kr/mariadb/repo/5.5/ubuntu/ trusty/main amd64 Packages
     5.5.41-1ubuntu0.14.04.1 0
        500 http://ftp.daumkakao.com/ubuntu/ trusty-updates/universe amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ trusty-security/universe amd64 Packages
     5.5.36-1 0
        500 http://ftp.daumkakao.com/ubuntu/ trusty/universe amd64 Packages

기본 패키지와 충돌이 나는 것일까?

그냥 5.5.36 으로 설치하면 괜찮을까?


기본 패키지로 깔아보니 잘 된다. 버전은 다음과 같다.

mysql  Ver 15.1 Distrib 5.5.41-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2




WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

서버를 변경하게 되었다. 

DNS 도 바꾸었는데, 해당 서버에 접속하는 외부의 특정서버에서 계속 구서버로 접속하는 문제가 있었다.

처음에는 /etc/hosts 등에 고정이 되었나 했는데, 아니다.

그리고 apache 가 그런 설정이 있나 체크해봤다. 아니다.

접속 부분이 php 의 curl 을 사용하고 있다.

curl 에서 혹시 DNS 캐시를 사용하나? 관련 부분을 찾아봤다.

아마도 관련된 옵션은 다음인 듯 하다. 

    curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, false);

    curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 2);


해당 옵션을 넣어주니 해결이 되었다.(아마도 첫번째 옵션일 듯 하다)


특정서버의 설정에서 문제가 있는지, 다른 외부 서버들은 이상이 없었다.




WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

mysql 접속이 안된다.

$ mysql -h {디비서버} -u root -p 

ERROR 1129 (00000): Host 'XXX' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

위와 비슷한 메시지가 나온다.

디비서버에서 다음 설정과 관련이 있다.

> select @@global.max_connect_errors;

+-----------------------------+

| @@global.max_connect_errors     |

+-----------------------------+

|                                   10 |

+-----------------------------+

1 row in set (0.02 sec)

max_connect_errors 라는 항목이다.

정확히 어떤 조건에서 카운트 되는지는 정확히 모르겠다.

저 값을 늘려주거나 초기화를 해주면 된다고 한다.

초기화는 다음명령.

> flush hosts;

접속이 된다.

추후 좀더 살펴봐야 겠다. 정확한 에러 조건이 뭔지 파악을 해야 겠다.




WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
스타트업.
장미빛 이야기만 들리는지도 모르겠다.
좋은점이 다른 나쁜점들을 덮을정도 일지도.

스타트업이란 무엇일까?
하고 싶은일들은 많다. 그것들을 하나씩 실현시키는 과정은 험난하고 고된일이다.

위시리스트를 작성하다보면 계속 생겨난다.
그것들을 하나씩 현실화 시키기 위해 투두리스트를 만든다.

엑시트니 투자니 그런것은 모르겠다
다만 투두리스트의 항목들을 실현시키는 재미가 좀 쏠쏠하다.

그 결과물이 나오는 것도...


WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
linode 에서 서버 몇개를 사용하고 있다.

유독 달라스쪽의 서버가 처리를 못하고 있다.

일단 서버를 삭제하고 재생성 해야 겠다.

리노드쪽이 SSD 가 아니던가?

SSD 가 아니면 간혹 서버부하가 걸려 처리잡을 소화 못하는 경우가 종종있는데.

full SSD 서비스 하는 호스팅으로 바꿔야 할까?




WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

자동실행을 잘 활용하면 편하다.

/etc/cron.d/ 폴더에 해당 스크립트를 복사하는 형태로 관리한다.

/etc/crontab 에 직접관리하는 것 보다 편리하다.


Centos 에서 쓰던 cron 스크립트를 Ubuntu 에 적용하니 cron 이 실행이 안되었다.

이것저것 찾아보던중.

11doSomethingJob.cron  => 이런 형태는 ubuntu 에서 동작을 안한다.

11doSomethingjobCron 이나 11doSomethingjob_cron 은 되는 듯 하다.


Centos 와 다른 부분이 있다.



WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

postfix 를 사용해서 메일을 보내고 있다.

언제 부터인가 다음과 같은 에러메시지가 보인다. 메일이 전송이 안된다.

sendmail: fatal: parameter inet_interfaces: no local interface found for ::1

얼마전 ipv6 관련 설정을 변경한 것 같은데, 그것과 관련이 있을 듯 하다.

/etc/postfix/main.cf 에서

inet_interfaces = all

또는 

inet_interfaces = {서버IP}

처럼 써준다.


ipv6 관련 설정을 다시 확인해서 바꿔봐야 겠다.(원인파악)
일단 위와 같이 해결.




WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

흠. 솔루션 관련해서 고도몰을 사용하고 있다.

솔루션 고객들이 쓰는 것을 봐주는 경우가 간혹있다. 오래되었다 보니 잘 만들긴 한듯 하다.(보이는 부분)


그런데, 대용량에 대한 설계가 안되어 있는 듯 하다.

그동안 버전업 하면서 성능에 대한 개선은 어려웠는지 상품이 10만개가 넘어가면 현저하게 느려진다.

지금 17만개정도 상품이 있는 쇼핑몰의 상품을 지우는데(관리자페이지 에서)

세월아! 네월아!  300여개 지우는데 10분이 넘어간다. 그냥 DB 에서 삭제할까라는 생각이 든다.

다른 부분에 영향이 없을까 그냥 관리자에서 지우고 있는데, 이거 너무한 듯 싶다.


고도몰에서 호스팅 사업도 하고 있으니 "더 좋은 서버를 쓰세요" 라는 마케팅 전략일지도 모르겠다.


네이버에서 인수했으니(정확히는 NHN 인가?) 좀 개선좀 해주면 좋겠다.

당분간 고도몰을 써야할 듯 한데, 조금씩 영카트 등 완전 오픈소스로 이전을 해야겠다.


솔루션 고객들에게 추천을 못하겠다.



WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  1개가 달렸습니다.
  1. 안녕하세요,,,!! 고성능 다임몰을 소개합니다..
    http://digmmall.itparadigm.co.kr
    다임몰은 상품수 1000만건을 자랑합니다.
    MS기반의 솔루션으로서 최상의 성능을 자랑하고 있습니다.
    사이트에 오셔서 확인해 보시면... 10여년의 기술노하우를 보실 수 있습니다,
    감사합니다.
secret

아마존 API 를 사용하면서 (Product Advertising API)

https://affiliate-program.amazon.com 의 광고수수료 도 테스트 중이다.


솔루션내에서 Product Advertising API 가 필요해서 연결중인데, 수익을 목적으로 하는 것은 아니고, 잘 되나 확인중이다.

1월경부터 시작해서, 이제야 적립이 된 듯 하다.

1월에는 금액이 별로 없다.(현재 400$ 이상 쌓인 듯 하다)

정산(?)이 2개월주기로 되는 듯 하다.

Unpaid Balance 인것을 보니, 아직 미 지급 된듯 한데, 글을 찾아보니 말경에 되는 듯 하다.

그러면 꼬박 3개월은 되어야 손에 수수료를 쥘 수 있는 듯 하다.

뭐! 부수입으로는 괜찮겠지만, 정산주기가 너무 길다.


추가 30 일 경에 드디어 입금이 되었다.

payoneer 계정으로 입금받도록 했는데, 입금이 되었다. payoneer 연회비로 대부분 빠져나갔다.
거의 첫 정산은 3달만에 이뤄진다. 다음달 부터는 한달단위로 되겠지.
(페이오니아 는 25$ 프로모션을 하고 있다. - 가입후 100$ 이 계좌로 입금되면 25$ 리워드?를 준다.)

추가 2달째 이번에는 300불가량 입금되었다.

이제 한달 단위로 된다.

API 승인 받는 부분에 대한 리포트는 별도로 할 예정. 끝






WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  6개가 달렸습니다.
  1. 하쿠나준 2015.04.06 18:24
    API를 이용하는데 별도 비용은 들지 않나요?
    혹시 AWS를 필수로 이용해야 한다던지 하는 조건이 있나요?
    • amazon 계정만 있으면 됩니다. 별도 비용이 들지는 않습니다.

      그런데, 일종의 승인(?) 과정이 있는지, 랜딩페이지 같은 사이트가 있어야 하는 것 같습니다.(사이트 주소 입력란이 있습니다.)

      해당 부분은 어느정도 수준이 필요한지 체크중에 있습니다.
  2. 비밀댓글입니다
  3. 아마존궁금 2016.12.28 03:15
    안녕하세요. 아마존 api 카테고리별 수수료율을 좀 알수있을까요?
  4. 비밀댓글입니다
secret

우분투 저장소를 ftp.daum.net 으로 사용하고 있다.

그런데, ftp.daum.net 이 접속이 안된다. 

오늘 virtualbox 를 설치하려고 보니 ftp.daum.net 쪽에서 데이터를 받아오지 못하는 것을 발견했다.


http://daumdna.tistory.com/839

를 확인해보니 80 포트는 유지한다는 것 같은데. 안된다.

일시적인지는 모르겠지만,  ftp.daumkakao.com  로 바꾸면 잘 된다.


우분투 서버들을 ftp.daumkakao.com 로 바꿔야 겠다.
정확히는 http://ftp.daumkakao.com  로 변경.




WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

개발도 서비스.

생각할일 2015. 2. 22. 17:59
예전에는 개발만 잘하면 되었던 것 같다.
개발스펙에 맞춰 개발하고 마무리.

이런식으로 작업하던것은 이제 없을 것 같다.
개발도 이제 서비스가 되었다.
한번 개발후 끝나는 것이 아니라, 개선하고 수정하고 요구사항에 맞춰 서비스의 방향이 바뀌기도 한다.

누군가에게 납품하는것은 예전방식대로 해야겠지만, 직접 서비스를 하는것은 정말 끝이 없는 것 같다.

수십명을 위한 서비스도 그런데, 수백 수천만명을 위한 서비스는 감도 잡기 어렵다.

역시나 팀의 소중함을 느낀다.
그런 이슈들을 해결하려면 혼자만의 역량으로는 한계가 있다.



WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

그동안 Digital Ocean 과 Linode 를 사용하고 있다.
내부 서비스에 작은 클라우드가 많이 필요해서 현재 수십대를 사용하고 있다.

둘다 별다른 불만은 없다.

좀더 다양한 지역분산 위해 VPS호스팅이 눈에 띄면 테스트 해보고 있다.


2016-07 월 특별 프로모션 중 

http://www.vultr.com/?ref=6923034-3B



몇개중에 vultr 이 눈에 띈다. http://www.vultr.com/?ref=6822762

vulture 의 줄임말인가? 뭐라 읽어야 하지? 벌쳐?

5$ 부터 시작한다. DO 보다 램이 조금 높다. 가격 우위에서 앞선다.


배포도 편하다. 일본지역이 있어서 좋다.
느낌은 DO 와 비슷하다. ssh key 등록도 되어 편하다.

성능은 배포해서 써보고 있는데, 무난한 것 같다.(뭐 기술적으로 비슷할테니...)

paypal 도 있고, 신용카드 결제도 가능핟.

bitcoin 으로도 결제 가능한 것이 특이하다.


프로모션 코드로 'SSDVPS' 를 입력하면 $20 credit 을 준다.(단, 1개월내에 소진해야 한다.)
언제까지 적용가능한지는 모르겠다.
신청하기 : http://www.vultr.com/?ref=6822762

5$ / 15$ plan 을 신청하고 1달써보고 테스트 해볼 예정이다.

검증해보고, 서비스로 쓸 만하다 싶으면, 서비스에 적용해야 겠다.



[기타 관련글]

가상서버들 간단한 사용기 - 스마일서브 / 디지털오션 / 벌쳐(vultr) 등

테스트 중인 가상서버 업체(USA)





WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  2개가 달렸습니다.
  1. 기프트코드 잘 썼습니다. 감사합니다..
  2. 포스팅해주신글 덕분에 vultr 를 알게되었습니다. 좋은 서버 호스팅 업체 추천해주셔서 정말 감사합니다..
    vultr 가입을 하면서 알게된 점인데, 최근에 생긴 도메인 같습니다.
    vultr.kr 으로 가입하면 $10~$200 프로모션을 받을 수 있더라구요.. 선결제 금액에 따라 차등으로 받으니까 적당히 크레딧 충전하시면 프로모션도 챙기실 수 있으니까 아마 블로그에서도 링크수정하신다면 방문자분들이 더 많은 혜택 누리실 수 있을 것 같습니다.

    최근에 $2.5 샌드박스 요금제가 출시되었고 1인당 2개까지만 구매 가능합니다.
    아쉽지만 현재는 재고 부족으로 구매가 불가능한 상황입니다.

    vultr 은 최근에 디도스 방어도 제공하고 있고, 일본 기준 10MB/s 속도 나올 정도로 10Gbps 속도가 매우 좋습니다. 요즘에는 다운도 안되구요. 정말 좋은 업체라고 생각합니다.
secret

우분투의 기본설정으로 모니터 자동끄기를 사용하고 있었다.

그런데, 어떤 이유인지 모니터를 2개연결하니 작동이 이상해졌다.

그래서 그냥 스크립트로 만들었다.(외국의 스크립트를 내 입맛에 맞게 부분 변경함)


시스템설정 > 키보드 > 단축키 에서 사용자 설정으로 다음 실행파일을 실행시키는 방법으로 한다.

#!/bin/bash
screenOffLockFile=/tmp/screen-off-lock
systemLockFile=/tmp/system-lock

if [ -f $screenOffLockFile ];
then
        rm $screenOffLockFile
        rm $systemLockFile
        notify-send "Screen on." -i /usr/share/icons/gnome/48x48/devices/display.png
else
        touch $screenOffLockFile
        sleep .5
        notify-send "Screen off now." -i /usr/share/icons/gnome/48x48/devices/display.png
        touch $systemLockFile
        sleep 1
        gnome-screensaver-command -l
        while [ -f  $screenOffLockFile ]
        do
                xset dpms force off
                if [ -f $systemLockFile ];
                then
                        sleep 30
                else
                        sleep 10
                fi
        done
        xset dpms force on
fi

난 안쓰는 Pause / Break 키를 단축키로 매핑시켰다. (본인 취향에 따라 )


gnome-screensaver-command -l  => 이 부분은 모니터를 끄면서 잠금모드로 변경하도록 했다.

30초단위로 모니터가 꺼진다.(시간단위도 본인에 맞게 조정)

계속 꺼지게 되므로 켜짐모드로 하려면 단축키를 다시 눌러준다.




WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

트랙백  0 , 댓글  0개가 달렸습니다.
secret